C#学习教程:从一个List 中删除在另一个List中找到的元素分享

文章介绍了如何在C#中使用LINQ的Except方法和HashSet来高效地从一个List中删除同时存在于另一个List中的元素,提供了多种实现方式,包括直接使用RemoveAll和预先将元素加载到HashSet以优化性能。
摘要由CSDN通过智能技术生成

我有两个清单

List list1 = new List(); List list2 = new List(); 

我想删除list1中的所有元素,它们也存在于list2中。 当然我可以遍历第一个循环来查找list2中的每个元素,但我正在寻找优雅的解决方案。

谢谢!

要更改实际的list1,您可以使用

 list1.RemoveAll(item => list2.Contains(item)); 

您可能更愿意只是对列表进行查询而不进行修改

 var result = list1.Except(list2); 

LukeH在评论中提出了一个很好的建议。 在第一个版本中,如果list2特别大,那么在RemoveAll调用之前将列表加载到HashSet可能是值得的。 如果列表很小,请不要担心。 如果您不确定,请尝试两种方式,然后您就会知道。

 var theSet = new HashSet(list2); list1.RemoveAll(item => theSet.Contains(item)); 

使用LINQ:

 var result = list1.Except(list2); 

 list1.RemoveAll( item => list2.Contains(item)); 

描述

我认为你的意思是通用类型List 。 您可以使用Linq执行此操作

样品

 List l = new List(); List l2 = new List(); l.Add("one"); l.Add("two"); l.Add("three"); l2.Add("one"); l2.Add("two"); l2.Add("three"); l2.Add("four"); l2.RemoveAll(x => l.Contains(x)); 

更多信息

 var result = list1.Except(list2); 

使用LINQ,您可以这样做:

  List1.RemoveAll(i => !List2.Contains(i)); 

如果要从另一个列表( list1 )中删除对象列表( list2 ),请使用:

 list1 = list1.Except(list2).ToList() 

请记住使用ToList()IEnumerable转换为List 。

上述就是C#学习教程:从一个List 中删除在另一个List中找到的元素分享的全部内容,如果对大家有所用处且需要了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值