2012-11-16 31 views
5

我有一个父类X和两个子类X1和X2(X1和X2派生自X)的列表。有没有简单的方法将X1和X2的列表合并成一个X列表?
我可以遍历X1和X2的列表,然后添加到X的列表中,但这看起来有点麻烦。将子类列表和父类列表结合起来

+0

可以用投我猜 – m4ngl3r

+0

肯定,但需要循环。我正在寻找一个linq(少代码)解决方案 – cs0815

回答

6

LINQ可以做到这一点与

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

方便或

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

,但它仍然循环 - 刚下盖。

+0

只要我不需要编写太多的代码,就不会真的在乎循环( - :刚刚发现了ConvertAll – cs0815

2

使用Enumerable.Cast方法,像这样:

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