我有两个列表,它们来自不同的来源。最好的方法是如何检查这两个列表是否包含相同的项?顺序并不重要。
List<Tuple<string, string, string>> list1;
List<Tuple<string, string, string>> list2;
我有两个列表,它们来自不同的来源。最好的方法是如何检查这两个列表是否包含相同的项?顺序并不重要。
List<Tuple<string, string, string>> list1;
List<Tuple<string, string, string>> list2;
您可以使用!Except.Any
:
bool same = list1.Count == list2.Count && !list1.Except(list2).Any();
解释:
Count
,否则您就会知道它们不包含相同的元素。Except
和Any
检查在从list1
中“删除”list2
后是否剩余元组。如果存在Any
(至少一个),则说明它们不包含相同的元素。此方法有效是因为元组覆盖了GetHashCode
(像匿名类型一样)和string
也覆盖了。
true
,如果它们包含完全相同的项目但可能顺序不同?或者如果一个有更多的项目,那也可以吗? - Florian Koch