如何将两个List <t>联合起来并将结果分配给第三个List <t>?</t> </t>

时间:2012-10-13 14:00:06

标签: c# .net

我有3个List&lt;&gt;对象。

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;

我的问题是如何实现它?

6 个答案:

答案 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仅返回唯一值。