【问题标题】:Counting Using Group By Linq使用 Group By Linq 进行计数
【发布时间】:2012-08-29 11:58:20
【问题描述】:

我有一个看起来像这样的对象:

Notice 
{
    string Name,
    string Address 
}

List<Notice> 中,我想输出所有不同的名称以及特定名称在集合中出现的次数。

例如:

Notice1.Name="Travel"
Notice2.Name="Travel"
Notice3.Name="PTO"
Notice4.Name="Direct"

我想要输出

Travel - 2
PTO - 1
Direct -1

我可以使用这段代码很好地获得不同的名称,但我似乎无法在 1 条 linq 语句中获得所有计数

  theNoticeNames= theData.Notices.Select(c => c.ApplicationName).Distinct().ToList();

【问题讨论】:

    标签: c# linq count group-by distinct


    【解决方案1】:
    var noticesGrouped = notices.GroupBy(n => n.Name).
                         Select(group =>
                             new
                             {
                                 NoticeName = group.Key,
                                 Notices = group.ToList(),
                                 Count = group.Count()
                             });
    

    【讨论】:

      【解决方案2】:

      使用 different overload of GroupBy 的 Leniel 答案的变体:

      var query = notices.GroupBy(n => n.Name, 
                      (key, values) => new { Notice = key, Count = values.Count() });
      

      基本上它只是省略了Select 调用。

      【讨论】:

        猜你喜欢
        • 2020-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-12
        • 1970-01-01
        相关资源
        最近更新 更多