今天写代码时,需要对一个数组对象中按一定规则合并、去重处理,不想再毫无新意手动写For循环遍历(天天写一样的代码很没劲),于是依旧linq,发现真心方便:

using System;
using System.Collections.Generic;
using System.Linq;namespace LinqTest
{class Program{static void Main(){List<Product> listProduct = new List<Product> {new Product{StockNum=1,ProductNo="01",Tag="a"},new Product{StockNum=2,ProductNo="01",Tag="b"},new Product{StockNum=3,ProductNo="02",Tag="c"},new Product{StockNum=4,ProductNo="02",Tag="d"},new Product{StockNum=5,ProductNo="03",Tag="e"},};//注:处理目标->将"编号(ProductNo)"相同的产品记录,"库存量(StockNum)"合并,"附属标签(Tag)"合并//合并处理listProduct.ForEach(c => {var group = listProduct.Where(a => a.ProductNo == c.ProductNo);c.StockNum = group.Sum(x => x.StockNum);c.Tag = group.Select(t => t.Tag).ToList().Join();});//去重复listProduct = listProduct.Distinct(new ProductNoComparer()).ToList();//输出验证listProduct.ForEach(c =>{Console.WriteLine("ProductNo={0},StockNum={1},Tag={2}", c.ProductNo, c.StockNum, c.Tag);});  //输出结果://ProductNo=01,StockNum=3,Tag=a,b//ProductNo=02,StockNum=7,Tag=c,d//ProductNo=03,StockNum=5,Tag=eConsole.Read();}}/// <summary>/// 工具类(一般开发中,可定义在自己的工具类库里)/// </summary>static class Utils {/// <summary>/// List扩展方法,将List元素用分隔符连接后,返回字符串/// </summary>/// <typeparam name="T"></typeparam>/// <param name="list"></param>/// <param name="splitStr"></param>/// <returns></returns>public static String Join<T>(this List<T> list, string splitStr=","){string result = string.Empty;foreach (var item in list){result += item.ToString() + splitStr;}return result.Trim(splitStr.ToCharArray());}}/// <summary>/// 产品实体类/// </summary>class Product{/// <summary>/// 库存/// </summary>public int StockNum { set; get; }/// <summary>/// 产品编号/// </summary>public String ProductNo { set; get; }/// <summary>/// 附属标签/// </summary>public String Tag { set; get; }}/// <summary>/// 去"重复"时候的比较器(只要ProductNo相同,即认为是相同记录)/// </summary>class ProductNoComparer : IEqualityComparer<Product>{public bool Equals(Product p1, Product p2){if (p1 == null)return p2 == null;return p1.ProductNo == p2.ProductNo;}public int GetHashCode(Product p){if (p == null)return 0;return p.ProductNo.GetHashCode();}}
}

其它编程语言如果都象C#这般犀利,世界就更美好了 

利用Linq对集合元素合并、去重复处理相关推荐

  1. spring中父子bean集合元素合并问题

    spring支持集合核定的功能,允许子bean继承父bean的同名属性集合元素,并将子bean中配置的集合属性值和父bean中配置的同名属性值合并起来作为最终bean的属性值: <bean id ...

  2. java list 合并去重复_java 实现多个list 合并成一个去掉重复的案例

    java 实现多个list 合并成一个去掉重复的案例,我就,说了,不多,给大家,代码 java 实现多个list 合并成一个去掉重复的案例 易采站长站,站长之家为您整理了java 实现多个list 合 ...

  3. 找出不是两个数组共有的元素(学习去重复算法)

    描述 给定两个整型数组,本题要求找出不是两者共有的元素.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬ ...

  4. python去重复记录_Python列表去重复项的N种方法(实例代码)

    说明 Python语言中列表(List)与其他语言的数组(Array)类似,是一种有序的集合数据结构,Python List可支持各种数据类型,长度也可动态调整,与JS中的数组或Java ArrayL ...

  5. Java List去重 Lis集合去重 List去重效率对比 List去重复元素效率对比 List去重效率

    Java  List去重 Lis集合去重 List去重效率对比 List去重复元素效率对比 List去重效率 --- List 去重复元素的几种办法 一.概述 面试的时候,有个常见的问题:" ...

  6. List和Set之间的转换:达到集合元素去重复

    在项目中看到一段代码: return new ArrayList<>(new HashSet<LabelEnum>(list)); 当时我的表情是这样的:     这把list ...

  7. Java利用Set集合去重复

    需求: 创建一个存储学生对象的集合,存储多个学生对象,使用程序实现在控制台遍历该集合,要求:学生对象的成员变量值相同,我们就认为是同一个对象. 分析: ①定义学生类,创建HashSet集合对象, 创建 ...

  8. java去重复的集合_如何去除Java中List集合中的重复数据

    1.循环list中的所有元素然后删除重复 public class duplicatRemoval { public static List removeDuplicate(List list){ f ...

  9. 【原创】从 列表的重复 到 用sum展开二层嵌套列表将子元素合并

    转载请注明出处:https://www.cnblogs.com/oceanicstar/p/9517159.html ★像R语言里头有rep函数可以让向量的值重复,在python里面可以直接对列表用乘 ...

  10. java list map 去重复_Java中List集合去除重复数据的六种方法

    1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...

最新文章

  1. ExcelBDD-Java开源组件发布了!
  2. python发送短信接口_python发送短信和发送邮件
  3. JAVA多线程及线程状态转换
  4. HDU 4740 The Donkey of Gui Zhou (模拟)
  5. node express创建项目步骤
  6. php c 交互,C语言和go语言之间的交互操作方法
  7. Raspberry install wine
  8. javascript 常用小例子收集
  9. SAP 物料成本核算冻结:料号. 不能过账,是否取消?消息 CK167
  10. 详述 PROCEDURES_ICD 患者手术情况表 (七)
  11. kdj买卖指标公式源码_通达信买卖KDJ副图指标公式
  12. 微信lbs开发java_微信LBS获取
  13. 盘点淘宝、腾讯、百度内部使用的JavaScript库
  14. 那个人路过了青春一阵子,却会在记忆里搁浅一辈子
  15. mysqldb python linux,Linux下安装 MySQLdb模块
  16. 北京中医药大学《计算机基础》平时作业1
  17. ozip解密_【ozip转换解包】ROM制作工具已适配机型列表,全网最全!
  18. 小偷和抢劫是被怎么遏制的?
  19. SQL SERVER 使用stuff函数进行分组且合并
  20. Oracle -PL/SQL Developer错误解决方案(ORA-02291)

热门文章

  1. Entity Framework 4.1 CodeFirst实例
  2. 软件架构师的修炼之道
  3. ELK日志搜索平台搭建
  4. 多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念(转)
  5. 通俗易懂的理解机器学习中的正则化项,正则化防止过拟合的的原理
  6. 《JavaScript高级程序设计(第3版)》阅读总结记录第一章之JavaScript简介
  7. 投影仪开关机码和波特率
  8. DFS+剪枝:N个蛋放入M个篮子并可以任意取
  9. 如何给IDC_STATIC关联成员变量
  10. 如何有逻辑的,简单清晰的回应问题