13

我有一个名为“DTHead”的数据表,其中包含以下记录,

 MIVID      Quantity         Value
------     ----------       --------
   1           10             3000
   1           20             3500
   1           15             2000
   2           20             3000
   2           50             7500
   3           25             2000

在这里,我需要根据MIVID将上面的DataTable拆分成三个表,如下所示;

DTChild1:

  MIVID           Quantity        Value
 -------         ----------     ---------
   1                10             3000
   1                20             3500
   1                15             2000

DTChild2:

  MIVID           Quantity        Value
 -------         ----------     ---------
   2                20             3000
   2                50             7500

DTChild3:

  MIVID           Quantity        Value
 -------         ----------     ---------
    3               25             2000

假设,如果 Header DataTable 包含 4 个不同的 MIVID 表示,那么应该根据 MIVID 创建 4 个 Child DataTable。这该怎么做?

4

2 回答 2

30

用于LINQ to DataTable按 对第一列进行分组GroupBy,并使用方法CopyToDataTable将行列表复制到DataTable

 List<DataTable> result = DTHead.AsEnumerable()
            .GroupBy(row => row.Field<int>("MIVID"))
            .Select(g => g.CopyToDataTable())
            .ToList();

然后,您可以按预期将结果作为 DataTables 列表获得。

于 2012-10-05T06:03:11.723 回答
0
DataTable tbl = new DataTable("Data").AsEnumerable()
    .Where(r => r.Field<int>("ParentId") == 1) // ParentId == 1
    .Where(r => r.Field<int>("Id") > 3) // Id > 3
    .Where(r => r.Field<string>("Name").Contains("L")) // Name contains L
    .OrderBy(r => r.Field<int>("Id")) // Order by Id
    .CopyToDataTable();
于 2019-02-06T08:09:44.200 回答