我在C#中的数据表有两列转换多行成一个DataTable中
State Region
A 1
A 2
B 3
B 4
我想实现的是
State Region
A 1,2
B 3,4
这是可能在C#中使用单个LINQ查询?
我不擅长LINQ,也不想通过循环表来达到目的。
我在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);
}
}
谢谢..会尝试out –
Cuong Le:谢谢你的单线解决方案!结果以预期的格式出现。但是,第二列显示逗号分隔“System.Data.DataRow,System.Data.DataRow”而不是实际区域 –
@AnilSoman:我编辑了我的答案 –
现在冷却它的工作。谢谢! –