将多个datatable合并为一个

本文关键字:一个 合并 datatable | 更新日期: 2023-09-27 18:18:56

我有多个数据表(9数据表)与列超过15每个。每个数据表有一个公共字段ItemID和相同的行数。我的要求是将这些数据表合并到一个单一的数据表,以便我可以绑定到一个网格。我尝试了数据集合并功能,但合并9个数据表需要很多时间。

将多个datatable合并为一个

如果您可以访问数据库层,则可以创建连接每个表的SQL查询。通常,对大型数据集的操作在数据库级别要比在。net级别快得多。

您可能希望这样做,而不是使用DataTable。

public class RowWrapper
{
    public DataRow TheRow;
    public EType RowType;
    public Enum EType {
        Type1
        , Type2
        , ...
    }
    public RowWrapper(DataTable theRow, EType rowType)
    {
        this.TheRow = theRow;
        this.RowType = rowType;
    }
}
<...>
this.myGrid.DataSource = Table1.AsEnumerable().Select(r => new RowWrapper(r, EType.Type1))
.Union(Table2.AsEnumerable().Select(r => new RowWrapper(r, EType.Type2))
.Union ...

然后在行绑定事件处理程序中。

var rw = e.Item.DataItem as RowWrapper;
switch (rw.RowType)
{
    case EType.Type1 :
    ...
    case EType.Type2 :
    ...
    ...
}