聚合操作符(如Count、Sum、Min、Max、Average和Aggregate操作符)不返回一个序列,而返回一个值。
Count()扩展方法返回集合中的项数。下面的Count()方法应用于Racer的Years属性,来筛选赛车手,只返回获得冠军次数超过3次的赛车手。因为同一个查询中需要使用同一个计数超过一次,所以使用let子句定义了一个变量numberYears:
static void AggregateCount()
{
var query = from r in Formula1.GetChampions()
let numberYears = r.Years.Count()
where numberYears >= 3
orderby numberYears descending,r.LastName
select new {
Name = r.FirstName + " " + r.LastName,
TimesChampion = numberYears
};
foreach(var r in query)
{
System.Console.WriteLine($"{r.Name} {r.TimesChampion}");
}
}
结果如下:
Juan Manuel Fangio 5
Jack