📌  相关文章
📜  c# 如何检查两个列表是否具有相同的值 - C# (1)

📅  最后修改于: 2023-12-03 14:39:45.992000             🧑  作者: Mango

C# 如何检查两个列表是否具有相同的值

在 C# 中,可以使用 Enumerable.SequenceEqual() 方法来检查两个列表是否具有相同的值。

方法一

使用 Enumerable.SequenceEqual() 方法:

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

class Program
{
    static void Main(string[] args)
    {
        List<int> list1 = new List<int> { 1, 2, 3, 4 };
        List<int> list2 = new List<int> { 1, 2, 3, 4 };
        List<int> list3 = new List<int> { 1, 2, 3, 5 };
        List<int> list4 = new List<int> { 1, 2, 3 };

        bool result1 = Enumerable.SequenceEqual(list1, list2); // true
        bool result2 = Enumerable.SequenceEqual(list1, list3); // false
        bool result3 = Enumerable.SequenceEqual(list1, list4); // false

        Console.WriteLine(result1);
        Console.WriteLine(result2);
        Console.WriteLine(result3);
    }
}

输出:

True
False
False
方法二

自定义比较器:

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

class Program
{
    static void Main(string[] args)
    {
        List<MyClass> list1 = new List<MyClass>
        {
            new MyClass { Value = 1 },
            new MyClass { Value = 2 },
            new MyClass { Value = 3 }
        };

        List<MyClass> list2 = new List<MyClass>
        {
            new MyClass { Value = 1 },
            new MyClass { Value = 2 },
            new MyClass { Value = 3 }
        };

        List<MyClass> list3 = new List<MyClass>
        {
            new MyClass { Value = 1 },
            new MyClass { Value = 2 },
            new MyClass { Value = 4 }
        };

        bool result1 = list1.SequenceEqual(list2, new MyClassEqualityComparer()); // true
        bool result2 = list1.SequenceEqual(list3, new MyClassEqualityComparer()); // false

        Console.WriteLine(result1);
        Console.WriteLine(result2);
    }
}

class MyClass
{
    public int Value { get; set; }
}

class MyClassEqualityComparer : IEqualityComparer<MyClass>
{
    public bool Equals(MyClass x, MyClass y)
    {
        return x.Value == y.Value;
    }

    public int GetHashCode(MyClass obj)
    {
        return obj.Value.GetHashCode();
    }
}

输出:

True
False

以上就是在 C# 中检查两个列表是否具有相同的值的方法。