C# 如何使用LINQ从DataTable中获取字段的分组数组
我有一个C# 如何使用LINQ从DataTable中获取字段的分组数组,c#,linq,datarow,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); 从这个表中,我只想要值按键进行分组 {{2,4},{6,8,10}
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);
从这个表中,我只想要值
按键进行分组
{{2,4},{6,8,10}}
更准确地说,IEnumerable
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);
我设计了一个查询
var res = from row in tbl.AsEnumerable()
group row by row.Field<int>("key")
into nGroup select nGroup;
var res=来自tbl.AsEnumerable()中的行
按行分组。字段(“键”)
进入nGroup选择nGroup;
这为我提供了与键组合的数据行
组,即IEnumerable
如何仅选择值?对于每个n组
,您需要选择值
s:
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")
);
var res=来自tbl.AsEnumerable()中的行
按行分组。字段(“键”)放入nGroup
挑选(
从n到n组
选择n.字段(“值”)
);
尝试以下操作:var results=tbl.AsEnumerable().GroupBy(x=>x.Field(“key”)).Select(x=>newkeyvaluepair(x.First().Field(“value”)、x.Last().Field(“value”)).ToList()@jdweng:部分有效。据我所知,它只需要每个组的第一个和最后一个元素。但是组可以有无限数量的元素(参见更新的答案)。然后使用以下命令:var results=tbl.AsEnumerable().GroupBy(x=>x.Field(“key”)。Select(x=>x.Select(y=>y.Field(“value”)。ToList()).ToList()@是的,这很有效。请您回答一下(最好使用LINQ语法)。我会接受的。