2013-04-20 34 views
-1

說,我的狗班有其他班級,跳蚤。從列表中返回每個原始列表屬性的新列表?

class Dog 
{ 
    public Flea flea; 
} 

現在,如果我有狗的列表:List<Dogs> manyDogs 我怎樣才能打開該列表爲List<Flea> fleaInEachDogs

目前,我會做這樣的:

List<Flea> fleaInEachDogs = new List<Flea>(); 
foreach(Dog d in manyDogs) 
{ 
    fleaInEachDogs.Add(d.flea); 
} 

但我覺得更方便的方法,總肯定是適用於所有List類。有沒有?

+1

你的'跳蚤'屬性真的是'私人'嗎? – MarcinJuraszek 2013-04-20 18:26:55

+0

你的'跳蚤'屬性真的只是一個領域? – 2013-04-20 18:36:28

+0

對不起!它是公開的而不是私人的。編輯的問題。 – 5argon 2013-04-23 01:49:51

回答

8

您可以使用LINQ的Select擴展更簡潔吧,雖然沒有什麼像「勇氣」的方法來獲得通過名稱屬性(看到,因爲這將需要反思):

var fleaInEachDogs = manyDogs.Select(dog => dog.flea); 

(使用ToList()在那IEnumerable得到一個完全像你原來的代碼的列表)。

+0

@JohanLarsson:假設。 :) – Ryan 2013-04-20 18:27:14

+2

這將不會與私人領域工作... – 2013-04-20 18:37:36

+0

@HenkHolterman:都不會有原始代碼。 [上面的評論](http://stackoverflow.com/questions/16123720/from-list-return-a-new-list-of-each-original-lists-property/16123736?noredirect=1#comment23029990_16123736)是在提及「假設'跳蚤'是私人的。」 – Ryan 2013-04-20 18:59:03

相關問題