将List <myobject>转换为List <imyinterface>的最佳方法是什么?</imyinterface> </myobject>

时间:2013-06-22 02:50:15

标签: c# collections interface

我有一个对象列表。让我们称之为MyObject,我需要将它们转换为IMyInterface列表,因为我想将其他东西添加到列表中,而不是MyObject,但也实现了我的界面。我试过这个,但它不起作用。

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

有什么建议吗?我是否需要预先在阵列中投射每个项目?

3 个答案:

答案 0 :(得分:8)

试试这个

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

答案 1 :(得分:3)

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

OfType<>也可以,但是可以作为过滤器,而不是每个项目的转换。

答案 2 :(得分:0)

将n列表转换为接口列表非常简单,您只需添加到myobjectlist这段代码的末尾.OfType<IMyInterface>().ToList() , and you can use mylistobject.Cast`以及

以下是一些有用的链接

链接1 How do you cast a List of supertypes to a List of subtypes? LINK2 How to cast List<Object> to List<MyClass> LINK3

OffType转换的完整代码

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

Cast转换的完整代码

 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>());

跳过这个回答了你的问题