繁体   English   中英

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

[英]Comparing two lists(of Integer) for equality

我知道这个非常类似的问题已经问了好几次了,例如在比较两个集合是否相等时,不管它们中的项顺序如何 ,但是我正在尝试使用我在此处阅读的解决方案,但有些问题无法解决...这是我犯的一个愚蠢的错误...请帮助!

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

Dim lst1 as new list(of integer)
Dim lst2 as new list(of integer)
Dim lst3 as new list(of integer)

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

lst1:    lst2:    lst3:
1        1        2
2        2        3
3        3        4
4        4        5

因此,显然,lst1&lst2相等而lst1&lst3不相等,但是我可以在if语句中写入哪些代码来验证这一点?

我试过了:

lst1.SequenceEqual(lstXX)

并为我尝试过的lst2和lst3返回True

lst1.Equals(lstXX)

并且对于lst2和lst3都返回False

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

谢谢!!!

假设您希望排序很重要, 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
    }
}
class Program
{
    static void Main(string[] args)
    {
        var list1 = new List<int>() { 1, 2, 3, 4 };
        var list2 = new List<int>() { 1, 2, 3, 4 };
        var list3 = new List<int>() { 2, 3, 3, 4 };

        Console.WriteLine(list1.SequenceEqual(list2)); // True
        Console.WriteLine(list1.SequenceEqual(list3)); // False
        Console.ReadLine();
    }
}

可以正常工作。 一定是别的东西。

确定您的ij是您认为的样子吗?

确定您的清单是按照问题中的顺序排列的吗? 如果未正确订购它们,则SequenceEqual将返回False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM