将多个DataTable组合成一个

时间:2013-06-17 14:39:18

标签: c# .net

我有多个数据表(9个数据表),每个数据表超过15个。每个数据表具有公共字段ItemID和相等的行数。我的要求是将这些数据表组合到一个数据表中,以便我可以绑定到网格。 我尝试使用数据集Merge函数,但合并9个数据表需要很长时间。还有其他选择吗?

2 个答案:

答案 0 :(得分:0)

如果您有权访问数据库层,则可以创建连接每个表的SQL查询。通常,对大型数据集的操作在数据库级别而不是.NET级别上会明显更快。

答案 1 :(得分:0)

您可能希望执行类似这样的操作,而不是使用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 :
    ...
    ...
}