C#中IEnumerableT.Aggregate()的简单使用
背景介绍
IEnumerable<T>.Aggregate()在LINQ使用中好像很不起眼,但我个人认为这是十分实用并且强大的,支持自定义聚合操作,方法定义中的Func包含3个TSource参数,分别为下一个执行聚合的元素,当前聚合的元素,返回的元素。
代码如下:
static void Main(string[] args){List<Phone> PhoneLists = new List<Phone>(){new Phone { Country = "中国", City = "北京", Name = "小米" },new Phone { Country = "中国",City = "北京",Name = "华为"},new Phone { Country = "中国",City = "北京",Name = "联想"},new Phone { Country = "中国",City = "台北",Name = "魅族"},new Phone { Country = "日本",City = "东京",Name = "索尼"},new Phone { Country = "日本",City = "大阪",Name = "夏普"},new Phone { Country = "日本",City = "东京",Name = "松下"},new Phone { Country = "美国",City = "加州",Name = "苹果"},new Phone { Country = "美国",City = "华盛顿",Name = "三星"},new Phone { Country = "美国",City = "华盛顿",Name = "HTC"}};Phone phone = PhoneLists.Aggregate((next, now) =>{if (now.Country.Equals("美国")){next.City += now.City;return next;}else{return now;}});Console.WriteLine($"{phone.Country} - {phone.City} - {phone.Name}");Console.Read();}
执行结果如下图所示:
另外附上此方法的源代码:
public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func)
{using (IEnumerator<TSource> enumerator = source.GetEnumerator()){enumerator.MoveNext();TSource current = enumerator.Current;while (enumerator.MoveNext())current = func(current, enumerator.Current);return current;}
}
C#中IEnumerableT.Aggregate()的简单使用相关推荐
- C#中IEnumerableT.GroupBy()的简单使用
背景介绍 在实际项目中,对数据进行GroupBy肯定是常用需求之一,特别是采用EF等ORM框架后隔绝了用SQL语句直接操作数据,LINQ中的GroupBy肯定是要掌握的. 首先先对一个字段GroupB ...
- php 在数组中,PHP 在数组中搜索给定的简单实例 array_search 函数
array_search() PHP array_search() 函数用于在数组中搜索给定的值,如果成功则返回相应的键名,否则返回 FALSE . 语法: mixed array_search( m ...
- 解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了
解析 WEB 中所有 URL 的简单牛B代码,先保存起来,方式将来找不到了 2011-11-22 16:48 by 通用信息化建设平台, 1471 ...
- mysql中序列的使用,在MySQL中使用序列的简单教程
序列是一组整数1,2,3,...中生成的顺序.序列中经常使用的数据库,因为很多应用都需要一个表中的每一行包含一个独特的值和序列提供了一个简单的方法来产生.本章介绍如何使用MySQL中的序列. 使用自动 ...
- SQL Server中的锁的简单学习
原文:SQL Server中的锁的简单学习 简介 在SQL Server中,每一个查询都会找到最短路径实现自己的目标.如果数据库只接受一个连接一次只执行一个查询.那么查询当然是要多快好省的完成工作.但 ...
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...
- 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定
原标题:怎么录制淘宝页面中的视频?简单方法,轻松搞定 怎么录制淘宝页面中的视频?当前足不出户,大家就可以在很多的电商平台购买到自己心仪的商品.这其中商机也就产生了,如果不太想上班,或者说想要自己当老板 ...
- java color类 蓝色_java中Color类的简单总结
标签: java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 p ...
最新文章
- UI设计培训学习中必须掌握的设计原则
- IE9(测试版)浏览器实用快捷键使用方法
- AS2的MD5/SHA1/TEA等加密算法类
- Jeremy Keith在 Fronteers 2010 上的主题演讲
- 无法启动程序 计算机丢失QT,Win7系统打开程序提示计算机中丢失qt5core.dll如何解决...
- boost::make_reverse_graph用法的测试程序
- stmmac描述符的结构和初始化
- 《大数据》第1期——创刊寄语
- 友好的免抠图片素材| PNG设计元素集海量来袭
- CAD制图系列之中心线画法
- Presto在滴滴的探索与实践
- 天龙源码框架分析_天龙源码分析 - 客户端登录流程
- spark 读写SequenceFile
- 【每日算法Day 67】经典面试题:手动开根号,你知道几种方法?
- java笔试涉及编程题
- 【JY】反应谱的详解与介绍
- 邱关源电路课后题第二章(第五版)
- H5活动页面抽奖源码
- java 改变图片某个坐标点的颜色,并返回给前台显示
- 【文献翻译】Evaluating five different adaptive decomposition methods for EEG signal seizure detection
热门文章
- Redis详解(三)
- “云”上存储初显规模 如何架构是关键
- 斯蒂芬斯蒂芬但是当时发生的s
- linux内核笔记-内核同步
- SQL Server 2008 FILESTREAM特性管理文件
- python 导航栏_解析导航栏的url--selnium,beautifulsoup实战
- 如何解决ajax跨域问题
- boot spring 没有父子容器_Spring 系列(二):Spring MVC的父子容器
- mysql无法与外部健形成约束_MySQL Rails:错误:150“外键约束不正确”
- Java LocalDate类| minus()方法与示例