首页 > 解决方案 > 按列分组的 LINQ 方法语法,从每组中选择一个元素,每组的总数

问题描述

我正在寻找使用方法语法按列分组的 LINQ 查询,选择每个组的第一个成员并将每个组的总数添加到每个组的选定实体中。

有没有办法在 LINQ 方法语法中的单个优雅语句中实现这一点?

输入:

OrderId  Name       Category
=============================
1        Sam        X
2        Sam        Y
3        Matthew    A
4        Matthew    B

输出:

OrderId  Name       Category    Count
======================================
1        Sam        X           2
4        Matthew    B           2

像这样的东西。类别的值与我无关,我只想从组中获取任何元素。

标签: c#.netlinqfluent

解决方案


应该像GroupBy带有投影和一些聚合的一样简单

var results  = someList
      .Group(x => x.Name)
      .Select(x => new Entity()
         {
            Name = x.Key,
            OrderId = x.First().OrderId,
            Category = x.First().Category,  
            Count = x.Count()
         });
    

推荐阅读