2012-11-16 13 views
5

Mam klasę nadrzędną X i dwie listy klas potomnych X1 i X2 (X1 i X2 pochodzą z X). Czy istnieje prosty sposób na połączenie list X1 i X2 z listą Xs?
Mogłem przerzucić pętlę nad listami X1 i X2 i dodać do listy X, ale wydaje się to trochę uciążliwe.Łączenie list klas potomnych z listami klas nadrzędnych

+0

można użyć obsady myślę – m4ngl3r

+0

pewien, ale że wymaga pętli. Szukam rozwiązania linq (mniej kodu) – cs0815

Odpowiedz

6

LINQ może to zrobić wygodnie z

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

lub

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

ale mimo to zapętlenie - tylko pod kołdrą.

+0

nie obchodzi mnie pętla, o ile nie muszę pisać za dużo kodu (-: po prostu natknąłem się na ConvertAll również – cs0815

2

Zastosowanie Enumerable.Cast Metoda, jak to:

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