C# 比较元组列表的最佳方法
我有两个从不同来源填充的列表,检查两个列表是否包含相同项目的最佳方法是什么?秩序并不重要C# 比较元组列表的最佳方法,c#,C#,我有两个从不同来源填充的列表,检查两个列表是否包含相同项目的最佳方法是什么?秩序并不重要 List<Tuple<string, string, string>> list1; List<Tuple<string, string, string>> list2; 列表列表1; 清单2; 您可以使用!除了。任何: bool same = list1.Count == list2.Count && !list1.Except(list2
List<Tuple<string, string, string>> list1;
List<Tuple<string, string, string>> list2;
列表列表1;
清单2;
您可以使用!除了。任何
:
bool same = list1.Count == list2.Count && !list1.Except(list2).Any();
说明:
检查两个列表是否具有相同的计数
,否则您知道它们不包含相同的计数
然后,如果从list1
中“删除”list2
,则使用Except
和Any
检查是否存在重排元组。如果有任何
(至少一个),您知道它们不包含相同的内容
因为元组覆盖(也像匿名类型)和string
。所以如果它们包含完全相同的项,但可能顺序不同,那么您的检查应该返回true
?或者,如果一个人有更多的物品可以吗?最好的方式是你自己决定,而不是我们。你有没有试着自己解决这个问题?你试了什么?请出示代码,我们不会为您编写。@RenéVogt字符串和元组之间有区别。但是我同意一般的方法是一样的,你只需要提供一个comparer@FlorianKoch但这里的区别并不重要,元组的默认相等比较器对其所有元素使用默认相等比较器。这里的问题只是如何比较列表,列表元素的类型并不重要。请至少简要解释一下这段代码的工作方式和原因。@FlorianKoch:补充,这有意义吗?是的,完美(:除了o(n+m)中的性能)