C#Union两个对象列表:

时间:2018-01-10 16:28:53

标签: c# linq

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

class Program
{
    static void Main()
    {
        List<A> l = new List<A>();
        l.Add(new A("q"));

        l.Union(new[] {new A("w"), new A("E")}, new AComparer());

        Console.Write(l.Count);
    }
}

public class A
{
    public String b;

    public A(String x)
    {
        b = x;
    }
}

public class AComparer : IEqualityComparer<A>
{
    public bool Equals(A x, A y)
    {
        return x != null && y != null && x.b.Equals(y.b);
    }

    public int GetHashCode(A obj)
    {
        return 0;
    }
}

无法弄清楚如何使列表大小变为3?我试着查找https://msdn.microsoft.com/en-us/library/bb341731(v=vs.110).aspx,但无法弄清楚我是否遗漏了任何东西

1 个答案:

答案 0 :(得分:6)

Union并不是列表的成员,但它是IEnumerable的扩展 - Linq的一部分。这意味着它是纯净的,不会影响列表的状态,但会返回一个新的枚举。所以你可以做到

l = l.Union(otherL).ToList();