如何按多个字段分组并获取另一个字段的计数
本文关键字:字段 另一个 获取 何按多 | 更新日期: 2023-09-27 18:08:01
假设我有一个简单的类,比如
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
我有一个叫做persons
的IQueryable<Person>
。我要做的是相当于
SELECT
FirstName,
LastName,
COUNT(Age) As AgeCount
FROM dbo.Persons
GROUP BY FirstName, LastName
如果我们在SQL领域。我如何在LINQ中写这个?
我看过像linq与groupby和count这样的帖子,它们都不完全像我的场景。
您可以按匿名对象分组,然后投影每个组以选择所需的属性:
var result = persons
.GroupBy(p => new { p.FirstName, p.LastName })
.Select(g => new
{
FirstName = g.Key.FirstName,
LastName = g.Key.LastName,
AgeCount = g.Count()
});
应该是这样的:
persons.GroupBy(p => new { p.FirstName, p.LastName })
.Select(p => new {
p.Key.FirstName,
p.Key.LastName,
AgeCount = p.Where(p1 => p1.Age != null).Select(p1 => p1.Age).Count() });