我在C#中有一个DataTable,有两列
State Region
A 1
A 2
B 3
B 4
我想要实现的是
State Region
A 1,2
B 3,4
这是否可以在C#中使用单个LINQ查询?
我在LINQ中不擅长,也不想循环遍历表来实现它。
答案 0 :(得分:1)
var result = dataTable.AsEnumerable()
.GroupBy(row => row.Field<string>("State"))
.Select(g =>
{
var row = dataTable.NewRow();
row.ItemArray = new object[]
{
g.Key,
string.Join(",",
g.Select(r => r.Field<string>("Region")))
};
return row;
}).CopyToDataTable();
答案 1 :(得分:0)
使用GroupBy实现以下目标....
var groupedData = from b in dataTable.AsEnumerable()
group b by b.Field<string>("State") into g
select new
{
State = g.Key,
Regions = g,
};
然后您可以遍历每个组以获取数据...
foreach (var g in groupedData)
{
foreach (var w in g.Regions)
{
Console.WriteLine(w);
}
}