Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较元组列表的最佳方法_C# - Fatal编程技术网

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)中的性能)