【问题标题】:Group by one column and Distinct by another column using Linq使用 Linq 按一列分组并按另一列区分
【发布时间】:2012-11-22 01:42:09
【问题描述】:

我正在使用 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 行?

【问题讨论】:

    标签: c# linq c#-4.0 linq-to-sql


    【解决方案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()     
                };
    

    【讨论】:

      猜你喜欢
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2022-07-14
      • 2014-06-17
      • 1970-01-01
      • 2023-03-10
      • 2013-06-28
      相关资源
      最近更新 更多