2

C# に 2 つの列を持つ DataTable があります

State    Region
A        1
A        2
B        3
B        4

私が達成したいことは

State    Region
A        1,2
B        3,4

これは単一のLINQクエリを使用してC#で可能ですか?

私はLINQが苦手で、それを達成するためにテーブルをループしたくありません。

4

2 に答える 2

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();
于 2012-10-25T10:08:49.553 に答える
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); 
            } 
        } 
于 2012-10-25T10:04:56.093 に答える