2012-11-16 24 views
5

Bir ana sınıf X ve X1 ve X2 alt sınıflarının iki listesi (X1 ve X2 X'ten türetilmiştir). X1 ve X2 listelerini Xs listesine birleştirmenin kolay bir yolu var mı?
X1 ve X2 listelerinin üstesinden gelebilir ve daha sonra X listesine ekleyebilirim ama bu biraz hantal gibi görünüyor.Çocuk sınıfı listelerini üst sınıf listesine ekleme

+0

Eğer döküm kullanabilirsiniz i emin – m4ngl3r

+0

tahmin ama bu döngü gerektirir. Ben çok fazla kod yazmak zorunda kalmaz sürece bir linq (daha az kod) çözümü – cs0815

cevap

6

LINQ elverişli

var both = list1.Cast<X>().Concat(list2.Cast<X>()).ToList(); 

veya

var both = ((IEnumerable<X>)list1).Concat((IEnumerable<X>)list2).ToList(); 

ama yine de döngü oluyor ile yapabilirsiniz - sadece örtülerin altında. Böyle

+0

özlem gerçekten umurumda değil (-: sadece ConvertAll yanı sıra geldi – cs0815

2

Kullanım Enumerable.Cast Yöntem:

var list1 = new List<X1>(); 
var list2 = new List<X2>(); 
var result = list1.Cast<X>().Concat(list2.Cast<X>()).ToList(); 
İlgili konular