分裂的DataTable成2个或多个数据表基于列的值

问题描述 投票:13回答:2

我有一个名为“DTHead”,它具有以下记录的DataTable,

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

在这里,我需要分割上述数据表成基于诸如如下MIVID三个表;

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

假设,如果报头DataTable包含4个不同的MIVID装置,然后4子数据表应当基于MIVID创建。这个怎么做?

c# asp.net visual-studio-2010 datatable
2个回答
29
投票

通过LINQ to DataTable使用GroupBy到组的第一列,并使用方法CopyToDataTable复制的行列表DataTable

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

然后你就可以得到的结果作为数据表的列表,你的预期。


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();
© www.soinside.com 2019 - 2024. All rights reserved.