比较两个(Integer)列表是否相等

Joh*_*tos 8 .net c# linq vb.net

我知道这个非常类似的问题已经被问过很多次了,例如比较两个集合的平等而不管它们中的项目顺序如何,但我正在尝试使用我正在那里阅读的解决方案而且有些东西不起作用......这是我犯的一个愚蠢的错误...请帮忙!

好的,所以,这是我的方案,假设我在代码中创建了以下3个列表:

Dim lst1 as new list(of integer)
Dim lst2 as new list(of integer)
Dim lst3 as new list(of integer)
Run Code Online (Sandbox Code Playgroud)

然后,在代码中,我最终得到了列表中的以下值:

lst1:    lst2:    lst3:
1        1        2
2        2        3
3        3        4
4        4        5
Run Code Online (Sandbox Code Playgroud)

所以,显然,lst1和lst2是相等的,而lst1和lst3不是,但是我可以在if语句中写入什么代码来验证这一点?

我试过了:

lst1.SequenceEqual(lstXX)
Run Code Online (Sandbox Code Playgroud)

并且对于lst2和lst3都返回True我尝试过:

lst1.Equals(lstXX)
Run Code Online (Sandbox Code Playgroud)

并且对于lst2和lst3都返回False

现在,我知道我可以用代码比较count和lst1.Except(lstXX),但我想知道更多,所以我在这里做错了,更重要的是,最有效的方法是什么?

谢谢!!!

Jon*_*eet 18

假设您希望订购很重要,SequenceEqual正是您想要的 - 并且在您给出的样本中,lst1.SequenceEqual(lst3) 返回false.这是一个简短但完整的程序来演示:

using System;
using System.Collections.Generic;
using System.Linq;

class Test
{
    static void Main(string[] args)
    {
        var lst1 = new List<int> { 1, 2, 3, 4 };
        var lst2 = new List<int> { 1, 2, 3, 4 };
        var lst3 = new List<int> { 2, 3, 4, 5 };

        Console.WriteLine(lst1.SequenceEqual(lst2)); // True
        Console.WriteLine(lst1.SequenceEqual(lst3)); // False
    }
}
Run Code Online (Sandbox Code Playgroud)