我有3個列表<>對象。如何統一兩個列表<T>並將結果分配給第三個列表<T>?
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;
我的問題是如何實現的呢?
我有3個列表<>對象。如何統一兩個列表<T>並將結果分配給第三個列表<T>?
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>();
它沒有被指定,但'聯合'會刪除重複的條目,如果它們存在。如果@Michael想要保留重複項,請改用'Concat'。 –
你應該提到OP需要實現'EqualityComparer
非常好的答案! –
有點兒取決於您的要求,但可能是那麼容易,因爲
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()
這樣的: -
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();
}
}
聯盟只返回唯一值。
嘆息... List.AddRange怎麼樣?請在詢問之前做一些調查。 –
http://stackoverflow.com/a/1825577/1689451 –