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

标签 c# .net vb.net linq

我知道这个非常相似的问题已经被问过很多次了,比如在 Comparing two collections for equality irrespective of the order of items in them 中。 ,但我正在尝试使用我在那里阅读的解决方案,但有些东西不起作用……这一定是我犯的一个愚蠢的错误……请帮忙!!

好吧,这是我的场景,假设我在代码中创建了以下 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

现在,我知道我可以用比较计数和 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
    }
}

关于c# - 比较两个列表(整数)是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075218/

相关文章:

c# - 是否可以在 C# 5.0 中使用相同的异步方法签名并能够稍后决定如何执行此类方法

c# - SQLite 中的慢批处理/批量插入

vb.net - 在 VB.NET 中连接数组

c# - "The path .. would result in a file outside the App Bundle and cannot be used"错误,单触摸/Xamarin

c# - 一个 Action 可以授权给定用户/角色以外的所有人吗?

c# - 解析 html 帮助程序

c# - 如何向 SyndicateFeed 对象的序列化输出添加换行符?

asp.net - 从两个数据库表动态创建一个表并绑定(bind)到转发器

vb.net - List(Of MyClass) 的内联初始化

javascript - 如何在 Office JavaScript 加载项中调用 .NET dll?