我有3个List<>对象。
List<T> listA = new List<t>();
List<T> listB = new List<t>();
List<T> listC = new List<t>();
我需要联合listA和ListB并将其分配给ListC:
List<T> listC = new ListA +ListB;
我的问题是如何实现它?
答案 0 :(得分:7)
List<int> A = new List<int>();
A.Add(1);
A.Add(2);
List<int> B = new List<int>();
B.Add(3);
B.Add(4);
List<int> C = new List<int>();
C = A.Union<int>(B).ToList<int>();
答案 1 :(得分:4)
使用AddRange
:
List<T> listA = new List<t>();
List<T> listB = new List<t>();
List<T> listC = new List<t>();
listC.AddRange(listA);
listC.AddRange(listB);
答案 2 :(得分:3)
有点取决于您的要求,但可能就像
一样简单listC.AddRange(listA);
listC.AddRange(listB);
答案 3 :(得分:3)
尝试AddRange()
这个: -
listC.AddRange(listA);
listC.AddRange(listB);
答案 4 :(得分:2)
listC.AddRange(listA);
listC.AddRange(listB);
答案 5 :(得分:2)
使用其他人已提及的AddRange
,或者,如果您想要提及两者,则需要提供IEqualityComparer<T>
并使用Enumerable.Union
:
List<Foo> third = first.Union(second, new FooComparer()).ToList();
这是一个示例性实现:
public class FooComparer : IEqualityComparer<Foo>
{
public bool Equals(Foo x, Foo y)
{
return x.Id == y.Id; // assuming that there's a value type like ID as key
}
public int GetHashCode(Foo obj)
{
return obj.Id.GetHashCode();
}
}
Union仅返回唯一值。