您的位置:首页 > 其它

LINQ 标准的查询操作符 合计操作符 Count()、Sum()、Min()、Max()、Average()和Aggregate()

2009-10-07 18:37 489 查看
合计操作符如Count()、Sum()、Min()、Max()、Average()和Aggregate(),不返回一个序列,而返回一个值。
Count()扩展方法返回集合中的项数。下面的Count()方法应用于Racer的Years属性,过滤赛手,只返回
获得冠军次数超过3次的赛手:

privatestaticvoidQuantifiersCount()
{
varracers=fromrinFormula1.GetChampions()
wherer.Years.Count()>=3//对集合中的子对象集合操作
orderbyr.Years.Count()descending
selectnew
{
Name=r.FirstName+""+r.LastName,
TimesChampion=r.Years.Count()
};//匿名对象

foreach(varrinracers)
{
Console.WriteLine("{0}{1}",r.Name,r.TimesChampion);
}

}


结果如下:
MichaelSchumacher7
JuanManuelFangio5
AlainProst4



Sum()方法汇总序列中的所有数字,返回这些数字的和。

下面的Sum()用于计算一个国家赢得比赛的总次数。

首先根据国家,对赛手进行分组,再在新创建的匿名类型中,给Wins属性赋予某个国家赢得比赛的总次数。和SQL一个道理

privatestaticvoidQuantifiersSum()
{
varcountries=(fromcin
fromrinFormula1.GetChampions()
grouprbyr.Countryintoc//国家分组c来做结果集
selectnew
{
Country=c.Key,
Wins=(fromr1inc
selectr1.Wins).Sum()//统计
}
orderbyc.Winsdescending,c.Country//夺冠次数降序,国家名升序
selectc).Take(5);//取出5个

foreach(varcountryincountries)
{
Console.WriteLine("{0}{1}",country.Country,country.Wins);
}

}

根据获得一级方程式冠军的次数,最成功的国家是:
UK138
Germany91
Brazil78
France51
Finland40
方法Min()、Max()、Average()和Aggregate()的使用方式与Count()和Sum()相同。

Min()返回集合中的最小值,

Max()返回集合中的最大值,

Average()计算集合中的平均值。

对于Aggregate()方法,可以传送一个λ表达式,对所有的值进行汇总。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐