2017-10-12 28 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