利用Linq对集合元素合并、去重复处理

今晚看了一篇前辈写的linq对集合元素合并去重复处理,觉得有点麻烦,原文地址如下:http://www.cnblogs.com/yjmyzz/archive/2012/12/18/2823170.html#undefined。

于是我自己琢磨利用linq的分组函数,重新写了一个方法,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication4
{
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"},
};

List<Product> listProduct2 = new List<Product>();
var group = listProduct.GroupBy(p=>p.ProductNo);
foreach (IGrouping<string,Product> groupSequence in group)
{
Product p2= new Product
{
ProductNo=groupSequence.First().ProductNo,
StockNum=groupSequence.Sum(p=>p.StockNum) ,
Tag=string.Join(",",groupSequence.Select(t => t.Tag).ToArray())
};
listProduct2.Add(p2);
}

//输出验证
listProduct2.ForEach(c =>
{
Console.WriteLine("ProductNo={0},StockNum={1},Tag={2}", c.ProductNo, c.StockNum, c.Tag);
});
Console.Read();
}
}

/// <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; }
}

}

时间: 2025-01-02 13:56:28

利用Linq对集合元素合并、去重复处理的相关文章

php数组存在重复的相反元素,去重复

$arr1=array('a_b','c_d','b_a','d_c'); $arr2=array('a_b','c_d','b_a','d_c'); 条件: a_b==b_a:c_d==d_c: 需求:想得到无重复的数组: $newArr=array('a_b','a_c'); 解法: $newArr=array(); foreach($arr2 as $key=>$value){ $ceilArr=explode("_",$value); $str=$ceilArr[1].'

js list去重复

var dataList = [];//需要去重复的集合 var res = [];//去重复后的集合 var tem = {}; for(var i = 0; i < dataList.length; i++){ if(!json[dataList[i]]){ res.push(dataList[i]); tem[dataList[i]] = 1; } } 原文地址:https://www.cnblogs.com/ywx2/p/10960390.html

C# 两个List泛型用 Linq去重复数据 或者 得到重复数据

1, 两个List泛型用Linq去重复数据 Code: List<string> lstA = new List<string> { "E00401501B652563", "E00401501B652564", "E00401501B652565", "E00401501B652566", "E00401501B652567", "E00401501B652568&quo

去除List集合中的重复元素? 如果没有Set集合,List集合是怎么去除重复元素的(字符串类型,自定义类型)?

 关键字: 如果没有Set集合,List集合是怎么去除重复元素的(字符串类型)?  *   *     思考: List就可以存储重复元素,那么需求中容器中的元素必须保证唯一性,该如何解决呢??  *      *   去除List集合中的重复元素?  * * 思路: * * 1.首先我需要另一个临时容器tempList,用来存放我认为应该保留的元素.(也就是不重复的元素) * 2.然后我们应该遍历原容器, 一个一个的取出元素, 放入tempList. * 当tempList里已经装有刚刚取出的

1.22 P235第二题 分别向Set 和 List集合中添加“A”,&quot;a&quot;,“c”,“C”,“a”五个元素,观察重复值“a”能否在Set 和List 集合中成功添加。

1 public static void main(String[] args) { 2 3 List<String> array = new ArrayList<String>(); //创建 array 4 5 Set<String> hashset = new HashSet<String>(); //创建hashset 6 7 //array.add("A","a","c","C&

蓝桥杯——说好的进阶之去重复元素的排列组合

将待排列(组合)的数组,先分别统计出种类和个数,然后进行避免重复的排列(组合). /* 1,1,2,3的排列组合 去重复 * (借此复习排列组合) * * 1:2 2个1 * 2:1 1个2 * 3:1 1个3 * * */ static int[] iarr = new int[3];//目标序列 static int[] carr = new int[] { 1, 2, 3 };//3种item static int[] used = new int[] { 2, 1, 1 };//每种it

List集合去重复

1 ///获取List的集合值 2 foreach (DataRow row in dt.Rows) 3 { 4 list.Add(row["HJMC"].ToString()); 5 } 6 //list去重复 7 for (int i = 0; i < list.Count - 1; i++) 8 { 9 for (int j = list.Count - 1; j > i; j--) 10 { 11 if (list[j].ToString().Equals(list

集合去重复引入排序思想

1 package cn.arraylist.com; 2 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 6 public class ArrayListDemo2 { 7 8 public static void main(String[] args) { 9 // TODO Auto-generated method stub 10 ArrayList arraylist = new ArrayList(); 11

Linq、 集合、数组、Lambda、QuerySyntax

目录(?)[+] 目录 LINQ查询结果集 SystemArray 数组 基于SystemArray定义数组 基于类型定义数组 数组元素的清空 SystemArray类静态成员 不用循环填充数组 数组类实例成员 SystemCollections 集合 ArrayList 实例成员 静态成员 ListT ConvertAll ForEach FindFindLastFindIndexFindLastIndexExistsTrueForAll FindAll RemoveAll Sort Hash