[英]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();
}
}
可以正常工作。 一定是别的东西。
您确定您的i
和j
是您认为的样子吗?
您确定您的清单是按照问题中的顺序排列的吗? 如果未正确订购它们,则SequenceEqual
将返回False 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.