2017-10-12 27 views
1

我有一个Cat类和一个Dog类,实现了一个名为IAnimal的接口。将两个铸造类列表附加在一起

我有一个方法,获取catsdogs的列表。 目前我可以将cats转换为IAnimal并将其添加到animalList

List<IAnimal> animalList; 

... 

public void setUpList(List<Cat> cats, List<Dog> dogs){ 
    animalList = cats.ToList<IAnimal>(); 
} 

有投两个catsdogsIAnimal并将它们组合到一个列表中的一个雄辩的语言?

回答

1

您可以使用UnionToList()简单。像这样:

List<IAnimal> animalList = cats.Union(dogs.Cast<IAnimal>()).ToList(); 

只是不要忘记添加using System.Linq;using指令。

+0

我收到错误消息,我无法将类型强制转换为类型GenericList – lost9123193

+0

@ lost9123193 - 它应该是'cats .Union(dogs.Cast ())。ToList()'; – Alexei

1

我认为最简单的方法就是用Enumerable.Cast<>法和工会它们:

cats.Cast<IAnimal>().Union(dogs.Cast<IAnimal>()); 
+0

如果我有两个以上的对象,我会只追加另一个联盟吗? – lost9123193

+1

@ lost9123193 - 是的,你可以联合任何数量的IEnumerable <>,因为任何联盟都可以获得另一个IEnumerable <>'(它是“流畅”的)。 – Alexei

+0

啊我看到我得到一个错误,说我不能隐式地将IEnumerable转换为通用列表 – lost9123193