【转载】 C#使用Union方法求两个List集合的并集数据
在C#语言的编程开发中,有时候需要对List集合数据进行运算,如对两个List集合进行交集运算或者并集运算,其中针对2个List集合的并集运算,可以使用Union方法来快速实现,Union方法的调用格式为List1.Union(List2),List1和List2为同类型的List集合数据。
(1)针对值类型的List集合,两个集合的合并即以值是否相同为准进行合并。例如以下两个List<int>集合,list1的值为1、2、3、4。list2的值为3、4、5、6。则求它们并集可使用list1.Union(list2)快速实现。
List<int> list1 = new List<int> { 1, 2, 3, 4 };
List<int> list2 = new List<int> { 3, 4, 5, 6 };
List<int>  unionjiList = list1.Union(list2).ToList();
上述结果语句求得unionjiList 结果为:unionjiList 中含有5个元素,为1,2,3,4,5。
(2)针对引用类型的对象List集合,如自定义类对象的List集合,判断是否为同一个元素的规则是判断对象的引用指针是否一致,如果两个集合中的两个对象的所有属性值都一样,但对象的引用地址不同,也是2个不同的值,在并集中会同时出现这2个元素。具体举例如下:
List<TestModel> list1 = new List<TestModel>();
list1.Add(new TestModel() { Index = 1, Name = "TestModel1" });
list1.Add(new TestModel() { Index = 2, Name = "TestModel2" });
list1.Add(new TestModel() { Index = 3, Name = "TestModel3" });
list1.Add(new TestModel() { Index = 4, Name = "TestModel4" }); List<TestModel> list2 = new List<TestModel>();
list2.Add(new TestModel() { Index = 3, Name = "TestModel3" });
list2.Add(new TestModel() { Index = 4, Name = "TestModel4" });
list2.Add(new TestModel() { Index = 5, Name = "TestModel5" });
list2.Add(new TestModel() { Index = 6, Name = "TestModel6" }); List<TestModel> unionjiList = list1.Union(list2).ToList();
上述语句的运行结果为:unionjiList集合一共有8个对象,8个对象的属性值即为上述语句Add里面的一致。并没有把list1和list2中的Index=3或4的两个对象视为同一个元素。但如果是下列语句写法,则unionjiList集合中只有6个元素,unionjiList集合中Index为3或4的对象就各只有一个了。
            TestModel model1 = new TestModel() { Index = 1, Name = "TestModel1" };
            TestModel model2 = new TestModel() { Index = 2, Name = "TestModel2" };
            TestModel model3 = new TestModel() { Index = 3, Name = "TestModel3" };
            TestModel model4 = new TestModel() { Index = 4, Name = "TestModel4" };
            TestModel model5 = new TestModel() { Index = 5, Name = "TestModel5" };
            TestModel model6 = new TestModel() { Index = 6, Name = "TestModel6" };
            list1.Add(model1);
            list1.Add(model2);
            list1.Add(model3);
            list1.Add(model4);
            list2.Add(model3);
            list2.Add(model4);
            list2.Add(model5);
            list1.Add(model6);
            List<TestModel> unionjiList = list1.Union(list2).ToList();
关于List集合的并集运算的阐述就到这,相应的List交集运算可参考此文:C#编程中两个List集合使用Intersect方法求交集。
备注:原文转载自博主个人站点IT技术小趣屋,原文链接: C#使用Union方法求两个List集合的并集数据_IT技术小趣屋。
博主个人技术交流群:960640092,博主微信公众号如下:

【转载】 C#使用Union方法求两个List集合的并集数据的更多相关文章
- 【转载】C#使用Except方法求取两个List集合的差集数据
		在C#语言的编程开发中,针对List集合的运算有时候需要计算两个List集合的差集数据,集合的差集是取在该集合中而不在另一集合中的所有的项.A集合针对B集合的差集数据指的是所有在A集合但不在B集合的元 ... 
- python3 练习题100例 (二十二)输入两个字符串,输出两个字符串集合的并集
		题目内容: 输入两个字符串,输出两个字符串集合的并集. 为保证输出结果一致,请将集合内元素排序之后再输出, 如对于集合aset,可输出sorted(aset). 输入格式: 共两行,每一行为一个字符串 ... 
- C++程序设计实践指导1.5求两个整数集合并集改写要求实现
		改写要求1:改写为单链表结构可以对任意长度整数集合求并集 #include <cstdlib> #include <iostream> using namespace std; ... 
- 用二进制方法求两个整数的最大公约数(GCD)
		二进制GCD算法基本原理是: 先用移位的方式对两个数除2,直到两个数不同时为偶数.然后将剩下的偶数(如果有的话)做同样的操作,这样做的原因是如果u和v中u为偶数,v为奇数,则有gcd(u,v)=gcd ... 
- js求两个数组的交集|并集|差集|去重
		let a = [1,2,3], b= [2, 4, 5]; 1.差集 (a-b 差集:属于a但不属于b的集合) a-b = [1,3] (b-a 差集:属于b但不属于a的集合) b-a = [4 ... 
- 习题3.4 & 3.5: 求两链表的交集和并集
		#include<stdio.h> #include<stdlib.h> struct Node; typedef struct Node *PtrToNode; typede ... 
- 【转载】C#编程中两个List集合使用Intersect方法求交集
		在C#语言程序设计中,List集合是常用的集合数据类型,在涉及集合类型的运算中,有时候我们需要计算2个List集合中共有的数据,即对2个List集合求交集运算.此时可以使用C#语言提供的Interse ... 
- 【转载】C#的Merge方法合并两个DataTable对象的数据
		在C#中的Datatable类中,可以使用DataTable类的Merge方法对两个相同结构的DataTable对象进行求并集运算,将两个DataTable对象的数据行合并到其中一个DataTable ... 
- 定义一个复数(z=x+iy)类Complex,包含:  两个属性:实部x和虚部y  默认构造函数 Complex(),设置x=0,y=0  构造函数:Complex(int i,int j) 显示复数的方法:showComp()将其显示为如: 5+8i或5-8i 的形式。 求两个复数的和的方法:(参数是两个复数类对象,返回值是复数类对象)public Complex addComp(Compl
		因标题框有限,题目未显示完整,以下再放一份: 定义一个复数(z=x+iy)类Complex,包含: 两个属性:实部x和虚部y 默认构造函数 Complex(),设置x=0,y=0 构造函数:Compl ... 
随机推荐
- Python的开源人脸识别库:离线识别率高达99.38%(附源码)
			Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073 11.11 智慧上云 ... 
- typescript接口扩展
			/* typeScript中的接口 接口扩展 */ /* 接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用.接口定义了某一批 ... 
- Python之Django之views中视图代码重复查询的优化
			Django框架中views视图中如果多个函数都有同样的查询语句,例如: allcategory = Category.objects.all() remen = Article.objects.fi ... 
- sql中去除重复的数据    select distinct * from table
			总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中.所以重点是如何找出重复数据中的一条数据,有三种情况 1.重复数据完全一样,使用distin ... 
- TeslaManage  2.0编译日志
			1>------ 已启动全部重新生成: 项目: TeslaManage, 配置: Debug x64 ------1> Moc'ing teslamanage.h...1> Uic' ... 
- 中标麒麟+Qt+mysql解决驱动无法加载的问题
			问题描述:都安装了Qt,Mysql之后,发现Qt始终不能连接Mysql 1.安装Qt 2.写程序直接连接QMysql 打印QSqlDatabase: * driver not loaded ,进入/h ... 
- word xml 各个标签含义
			@参考文章 <w:p> <!--表示一个段落--> <w:val > <!--表示一个值--> <w:r> <!--表示一个样式串,指 ... 
- yaml文件实例:nginx+ingress
			[root@lab3 nginx]# cat nginx-test.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: nam ... 
- ubuntu18.04连接pptpd服务器(未成功)
			sudo apt-get install pptp-linux sudo pptpsetup --create testvpn --server 127.0.0.1 --username your_u ... 
- 【Leetcode_easy】938. Range Sum of BST
			problem 938. Range Sum of BST 参考 1. Leetcode_easy_938. Range Sum of BST; 完 
