合计操作符如Count()、Sum()、Min()、Max()、Average()和Aggregate(),不返回一个序列,而返回一个值。
Count()扩展方法返回集合中的项数。下面的Count()方法应用于Racer 的Years 属性,过滤赛手,只返回
获得冠军次数超过3 次的赛手:
private static void QuantifiersCount() { var racers = from r in Formula1.GetChampions() where r.Years.Count() >= 3 //对集合中的子对象集合操作 orderby r.Years.Count() descending select new { Name = r.FirstName + " " + r.LastName, TimesChampion = r.Years.Count() }; //匿名对象 foreach (var r in racers) { Console.WriteLine("{0} {1}", r.Name, r.TimesChampion); } }
结果如下:
Michael Schumacher 7
Juan Manuel Fangio 5
Alain Prost 4
Sum()方法汇总序列中的所有数字,返回这些数字的和。
下面的Sum()用于计算一个国家赢得比赛的总次数。
首先根据国家,对赛手进行分组,再在新创建的匿名类型中,给Wins 属性赋予某个国家赢得比赛的总次数。和SQL一个道理
private static void QuantifiersSum() { var countries = (from c in from r in Formula1.GetChampions() group r by r.Country into c //国家分组 c 来做结果集 select new { Country = c.Key, Wins = (from r1 in c select r1.Wins).Sum()// 统计 } orderby c.Wins descending, c.Country // 夺冠次数降序,国家名升序 select c).Take(5);//取出5个 foreach (var country in countries) { Console.WriteLine("{0} {1}", country.Country, country.Wins); } }
根据获得一级方程式冠军的次数,最成功的国家是:
UK 138
Germany 91
Brazil 78
France 51
Finland 40
方法Min()、Max()、Average()和Aggregate()的使用方式与Count()和Sum()相同。
Min()返回集合中的最小值,
Max()返回集合中的最大值,
Average()计算集合中的平均值。
对于Aggregate()方法,可以传送一个λ表达式,对所有的值进行汇总。
冯瑞涛
分类:
[01] .Net X
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?