3

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

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

有什么建议么?我需要预先在数组中投射每个项目吗?

4

3 回答 3

8

尝试这个

List<IMyInterface> l = myList.OfType<IMyInterface>().ToList();
于 2013-06-22T02:51:57.290 回答
3
myList.Cast<IMyInterface>().ToList()

OfType<>也有效,但旨在作为过滤器而不是每个项目的转换。

于 2013-06-22T03:14:02.800 回答
0

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

这里有一些有用的链接

Link1 如何将超类型列表转换为子类型列表? Link2 如何将 List<Object> 转换为 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>());

跳这回答了你的问题

于 2013-06-22T03:18:00.870 回答