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,但无法弄清楚我是否遗漏了任何东西
答案 0 :(得分:6)
Union并不是列表的成员,但它是IEnumerable的扩展 - Linq的一部分。这意味着它是纯净的,不会影响列表的状态,但会返回一个新的枚举。所以你可以做到
l = l.Union(otherL).ToList();