1

我正在使用 Linq 查询对列名进行分组并返回行列表。

var query = from row in ProcessSummaryData.AsEnumerable()
            group row  by new { Key = row .Field<string>("GroupDescription") } into g
            select new 
           { 
             GroupDescription = g.Key, 
             Values = g.ToList(), 

           };

这个查询的输出是这样的

GroupDescription   Values
1                  12,abc,xyz
                   12,abx,yut
                   13,tye,lki

2                  14,asd,acd

现在,在上面的示例中,Values 是一个 DataRow,我刚刚给出了其中的值示例。现在我想要的是对于 GroupDescription '1' 输出只有一行具有 '12' 值。我已经尝试了一些事情,其中​​之一是在第一个列表上有另一个 Linq 查询,但这会使事情变得过于复杂。如何使用 linq 按第一列分组,然后在某些列返回列表上使用 Distinct 以仅获取 Distinct 行?

4

1 回答 1

1

要获得第一次出现的字段值,您可以按该字段分组,然后获取每个分组的第一行。

var query = from row in ProcessSummaryData.AsEnumerable()
            group row  by new { Key = row .Field<string>("GroupDescription") } into g
            select new 
            { 
                GroupDescription = g.Key, 
                Values = (from value in g.ToList()
                          group value by value["Id"] into valueGroup
                          select valueGroup.First()).ToList()     
            };
于 2012-11-22T02:24:04.390 回答