C# に 2 つの列を持つ DataTable があります
State Region
A 1
A 2
B 3
B 4
私が達成したいことは
State Region
A 1,2
B 3,4
これは単一のLINQクエリを使用してC#で可能ですか?
私は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);
}
}