2013-10-16 13 views
0

對象的名單上有一個名爲DataAPIKey類。我有第二堂課,繼承那一堂課。請使用現有列表

在我的代碼中我有一個列表,我想用它來創建一個新類的列表。有沒有辦法做到這一點,而不使用每個循環?

使用下面的例子,我做了下面的代碼,這似乎是做我想做的事情。

List<DataAPIKey> apiList = db.GetPendingAction("Character"); 

List<DataCharacter> charList = apiList.Select(k => { 
     DataCharacter dc = new DataCharacter(k.apiKeyId, k.keyId, k.verificationCode); 
     return dc; 
    }).ToList() 

回答

6

使用LINQ Select方法。

var newList = oldList.Select(oldItem => new InheritedItem(oldItem)).ToList();

在普通的英語這轉化爲「把從oldList每個項目,喂每個作爲函數參數的函數,其將採取該項目,並執行一些邏輯返回一不同類型的物品,然後把所有返回的項目放入一個新的列表中。「

或者,如果你沒有一個構造函數初始化繼承的類,那麼你可以提供任何代碼塊:

var newList = oldList.Select(oldItem => 
{ 
    var newItem = new InheritedItem(); 
    newItem.Property = oldItem.Property; 
    return newItem; 
}).ToList(); 

或初始化:

var newList = oldList.Select(oldItem => new InheritedItem() 
{ 
    Property = oldItem.Property, 
    Property2 = oldItem.Property2 
}).ToList();