没有另一个列表元素的 C# 列表(集合论,补码)[重复]
Posted
技术标签:
【中文标题】没有另一个列表元素的 C# 列表(集合论,补码)[重复]【英文标题】:C# List without Elements of another List (set theory, complement) [duplicate] 【发布时间】:2020-01-19 01:43:09 【问题描述】:我有两个List<Image>
(ListA
和ListB
),我需要一种有效的方法来获取ListA
的元素,而不需要ListB
的元素(A\B)
例如:
ListA
包含 Image1
、Image2
、Image3
、Image4
ListB
包含 Image2
、Image4
ListA
\ ListB
将是 Image1
, Image3
我对 C# 比较陌生,欢迎提出一些建议
【问题讨论】:
var result = ListA.Except(ListB).ToList();
你可能错过了之前的搜索,这个问题是likely duplicated
【参考方案1】:
如果ListA
的项目是唯一的,你可以提出一个简单的Linq 查询:
using System.Linq;
...
List<Image> result = ListA
.Except(ListB)
.ToList();
如果要修改现有列表(即ListA
):
ListA.RemoveAll(image => ListB.Contains(image));
【讨论】:
感谢您的帮助!我意识到我必须为我的自定义 Image 类实现 IEquatable 接口 @flexwend:嗯,是的,如果你必须比较不同的实例,它们可以彼此相等(即如果Image1
可以等于Image2
) ;如果图像相等,当且仅当它们共享相同的 reference 时,您不必实现任何 IEquatable<T>
以上是关于没有另一个列表元素的 C# 列表(集合论,补码)[重复]的主要内容,如果未能解决你的问题,请参考以下文章
从一个列表中删除元素如果不包含在另一个列表中。 C# [重复]