我在 C# 中有一个包含两列的 DataTable
State Region
A 1
A 2
B 3
B 4
我想要实现的是
State Region
A 1,2
B 3,4
这在 C# 中是否可以使用单个 LINQ 查询?
我不擅长 LINQ,也不想循环遍历表来实现这一点。
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();
使用 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);
}
}