我在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:我編輯了我的答案 –
現在冷卻它的工作。謝謝! –