按属性分组列出<人员>并获取分组的次数

Dum*_*pen 0 c# properties list linq-group

假设我有一个名为Person的类:

public class Person
{
    public int Age { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一份人员名单:

Person { Age = 20, FirstName = "John", LastName = "Joe" }
Person { Age = 20, FirstName = "John", LastName = "Joe" }
Person { Age = 10, FirstName = "James", LastName = "Dokes" }
Run Code Online (Sandbox Code Playgroud)

我想要的是(新的或旧的具有新属性)列表按年龄,名字和姓氏对人进行分组我还想知道该对象被分组的次数.

所以上面的结果将是:

Person { Age = 20, FirstName = "John", LastName = "Joe", Count = 2 }
Person { Age = 10, FirstName = "James", LastName = "Dokes", Count = 1 }
Run Code Online (Sandbox Code Playgroud)

Jus*_*now 6

简单:

people.GroupBy(x => new { x.Age, x.FirstName, x.LastName })
      .Select(x => new { x.Key.Age, x.Key.FirstName, x.Key.LastName, Count = x.Count() });
Run Code Online (Sandbox Code Playgroud)