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;
私の質問は、それを実装する方法ですか?
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>();
これを試してくださいAddRange()
:-
listC.AddRange(listA);
listC.AddRange(listB);
使用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);
ちょっとあなたの要件に依存しますが、次のように簡単かもしれません
listC.AddRange(listA);
listC.AddRange(listB);
他の人がすでに述べたように使用する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 は一意の値のみを返します。
listC.AddRange(listA);
listC.AddRange(listB);