2

我在 C# 中有一个包含两列的 DataTable

State    Region
A        1
A        2
B        3
B        4

我想要实现的是

State    Region
A        1,2
B        3,4

这在 C# 中是否可以使用单个 LINQ 查询?

我不擅长 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 回答