2013-06-22 107 views
3

我有一個對象列表。讓我們稱他們爲MyObject,我需要將它們轉換爲IMyInterface列表,因爲我想將其他東西添加到不是MyObject的列表中,但也實現了我的界面。我試過這個,但它不起作用。 。將List <MyObject>轉換爲List <IMyInterface>的最佳方式是什麼?

List<IMyInterface> myList = myObjectList; //myObjectList is a List<MyObject> 

有什麼建議嗎?我需要在陣列中預先投射每個項目嗎?

回答

8

試試這個

List<IMyInterface> l = myList.OfType<IMyInterface>().ToList(); 
+0

你將需要'.ToList()'末尾:) –

+0

同意。更新的 – TGH

+0

從語義上講,使用'Cast ()'會更準確。 –

3
myList.Cast<IMyInterface>().ToList() 

OfType<>也可以,但是目的是作爲一個過濾器,而不是每個項目的轉換。

0

轉換ň列表的接口列表是很容易你要做的是增加的myobjectlist這個代碼pieace .OfType<IMyInterface>().ToList() , and you can use mylistobject.Cast`以及年底

下面是一些有用的鏈接

鏈接1 How do you cast a List of supertypes to a List of subtypes? 鏈路2 How to cast List<Object> to List<MyClass> 鏈接3

爲OffType轉換的完整代碼

List<IMyInteface>1 = mylistobject.OfType(IMyInterface>().ToList() ; 
對鑄造轉換

的完整代碼

List<IMyInteface>1 = mylistobject.Cast(IMyInterface>().ToList() ; 

,您可以嘗試下面的代碼,以及

var targetList = origList 
    .Select(x => new TargetType() { SomeValue = x.SomeValue }) 
    .ToList(); 

您可以使用此代碼以及

List<target> targetList = new List<target>(originalList.Cast<target>()); 

合這個回答你的問題

相關問題