问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C# List集合Linq取交集、并集、差集、去重

发布网友 发布时间:2024-10-04 03:52

我来回答

1个回答

热心网友 时间:2024-10-21 14:24

在C#中,List集合的处理可以通过LINQ方法来实现各种操作,如交集、并集、差集以及去重。首先,我们创建两个List对象,例如list1和list2:

List<List> list1 = new List<List>();

List<List> list2 = new List<List>();

1. 要获取两个List的交集,可以使用Intersect方法:

List<List> list3 = list1.Intersect(list2).ToList();

这会返回两个列表中共享的元素集合。

2. 获取并集,使用Union方法:

List<List> list4 = list1.Union(list2).ToList();

并集包含所有不重复的元素,即两个列表中的所有独特元素。

3. 要计算差集,即list1中独有的元素,使用Except方法:

List<List> list5 = list1.Except(list2).ToList();

这将返回在list1中但不在list2中的元素列表。

接下来,我们有一个包含重复项的User对象列表users:

List users = new List();

users.Add(new User("张三", "永丰路299号", DateTime.Parse("2018-05-03")));

users.Add(new User("张三", "上地西路8号", DateTime.Parse("2018-05-04")));

...其他重复项...

users.Add(new User("李四", "海鹰路甲一号", DateTime.Parse("2018-05-06")));

去重操作有两种方式:lambda表达式和Distinct方法。使用lambda表达式,可以找到所有不重复的User对象,基于Name属性:

List list6 = users.Where((x, i) => users.FindIndex(n => n.Name == x.Name) == i).ToList();

而Distinct方法则适用于值类型,如简单对象,它会根据对象的默认哈希和相等性规则去重:

List list7 = users.Distinct().ToList();

这样,list7将只包含所有唯一的User对象。

热心网友 时间:2024-10-21 14:31

在C#中,List集合的处理可以通过LINQ方法来实现各种操作,如交集、并集、差集以及去重。首先,我们创建两个List对象,例如list1和list2:

List<List> list1 = new List<List>();

List<List> list2 = new List<List>();

1. 要获取两个List的交集,可以使用Intersect方法:

List<List> list3 = list1.Intersect(list2).ToList();

这会返回两个列表中共享的元素集合。

2. 获取并集,使用Union方法:

List<List> list4 = list1.Union(list2).ToList();

并集包含所有不重复的元素,即两个列表中的所有独特元素。

3. 要计算差集,即list1中独有的元素,使用Except方法:

List<List> list5 = list1.Except(list2).ToList();

这将返回在list1中但不在list2中的元素列表。

接下来,我们有一个包含重复项的User对象列表users:

List users = new List();

users.Add(new User("张三", "永丰路299号", DateTime.Parse("2018-05-03")));

users.Add(new User("张三", "上地西路8号", DateTime.Parse("2018-05-04")));

...其他重复项...

users.Add(new User("李四", "海鹰路甲一号", DateTime.Parse("2018-05-06")));

去重操作有两种方式:lambda表达式和Distinct方法。使用lambda表达式,可以找到所有不重复的User对象,基于Name属性:

List list6 = users.Where((x, i) => users.FindIndex(n => n.Name == x.Name) == i).ToList();

而Distinct方法则适用于值类型,如简单对象,它会根据对象的默认哈希和相等性规则去重:

List list7 = users.Distinct().ToList();

这样,list7将只包含所有唯一的User对象。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? ...两个集合A,B(成员为整数),求两个集合的交集,并集,结果存 放于A中... 为什么在修改密码的时候每次都会有一个安全证书过期或无效的对话框呢... 中国科学技术馆啥时间开放 手机的麦克风可以录声音,但是把耳机插上就说不了话了,用什么耳机都不行... 古得奶是什么意思 ...分,农历6月13日,父亲姓丁,母亲姓陈请高人帮忙起个名字, ...data BUFFER[1]={0}是什么意思? 可以举例说下吗? ...a[i]+='0';//a[i]==15;15+1+80 = 96呀//啥意思?! c#二进制文件的输出.Console.Write("{0,7:x}",data[i]);什么意思 二次函数顶点坐标式二次函数的顶点坐标的公式的介绍 ...求指教。例子:uint8 data temp_str[8]=0,FE1_flag=0,i=0;_百度知... 演员郑恺有多高郑凯最后为什么选择与苗苗走到一起 郑凯女友程晓明身高 C语言输出出现次数最多的单词 数据结构——如何解决删除顺序表的偶数项问题? 猫在客厅电脑在卧室,不走明线怎么办? 发现少给客厅留有线电视线和插座。大家给想想办法呀~急呀· 三个卧室有必要都留网线吗-客厅网线怎么拉到卧室不想走明线_百度... c语言有道题不明白,为什么结果得5.5,麻烦讲解一下 想给客厅装上5.1的音箱(家庭影院),但是装修时没有预留布线槽怎么办呢... ...集合a集合b和全集 求两个集合的交集 并集 补集 差集 C语言,选择结构。输入两个闭区间,求他们的交集。 我在QQ中心修改密码时,出现安全警报说证书已过期或无效,验证码没内容... 我在QQ修改密码,然后就出现什么安全证书有问题,然后出现该站点安全证书... ...火零 线进第一个插座再返上方线槽然后进入第二个插座.……_百度知 ... 水电增加了一点插座,居然要1钱块!合理嘛? 强电如何分出插座 出租车司机没有服务证,发生事故,保险公司是否理赔 四川哪个火锅底料好 拼多多直通车作图(拼多多直通车自定义图片) 出租车司机没有上岗证,商业险是否能理赔 出租车司机不等上完客就开走造成的乘客受伤20天后才报保险公司理赔能受... 关于新申请的淘宝APPkey的问题,诚请资深淘客前辈作答。 出租车由没有出租车驾驶资格的司机驾驶出的全责事故,保险公司可以拒赔吗... 冰箱工作正常就是不制冷 为什么好多淘客软件都不需要输入appkey 淘客帝国的产品调用不出来怎么办 冰箱突然开机了不制冷 ...九二, 九三,九四,六五(变爻),上六恒卦,变卦为姤卦非常感谢 我刚刚自己起了一卦,从下到上 分别是少阳 少阴 老阳 少阴 少阳 老阳,两...