如何使用LINQ从DataTable中获取字段的分组数组

时间:2019-04-25 09:57:37

标签: c# linq datarow

我有一个DataTable

var tbl = new DataTable();
tbl.Columns.Add("key",typeof(int));
tbl.Columns.Add("value",typeof(int));
tbl.Rows.Add(1, 2);
tbl.Rows.Add(1, 4);
tbl.Rows.Add(3, 6);
tbl.Rows.Add(3, 8);
tbl.Rows.Add(3, 10);

在此表中,我只希望valueskey分组,例如

{{2,4},{6,8,10}} 

更精确地是IEnumerable<IEnumerable<int>>

我设计了一个查询

var res = from row in tbl.AsEnumerable() 
           group row by row.Field<int>("key") 
           into nGroup  select nGroup;

这给了我DataRow组和keyIEnumerable<IGrouping<int, DataRow>>的组合。

如何仅选择value

1 个答案:

答案 0 :(得分:1)

对于每个nGroup,您需要选择value

var res = from row in tbl.AsEnumerable()
          group row by row.Field<int>("key") into nGroup
          select (
              from n in nGroup
              select n.Field<int>("value")
          );