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

类似这样的事情。 category的值与我无关,我只想从组中获取任何元素。

解决方法

应该像带有投影 和一些 aggregates

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()
         });