我有一个对象列表。让我们称它们为 MyObject,我需要将它们转换为 IMyInterface 列表,因为我想将其他不是 MyObject 但也实现我的接口的东西添加到列表中。我试过这个,但它不起作用。.
List<IMyInterface> myList = myObjectList; //myObjectList is a List<MyObject>
有什么建议么?我需要预先在数组中投射每个项目吗?
我有一个对象列表。让我们称它们为 MyObject,我需要将它们转换为 IMyInterface 列表,因为我想将其他不是 MyObject 但也实现我的接口的东西添加到列表中。我试过这个,但它不起作用。.
List<IMyInterface> myList = myObjectList; //myObjectList is a List<MyObject>
有什么建议么?我需要预先在数组中投射每个项目吗?
尝试这个
List<IMyInterface> l = myList.OfType<IMyInterface>().ToList();
myList.Cast<IMyInterface>().ToList()
OfType<>
也有效,但旨在作为过滤器而不是每个项目的转换。
将 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>());
跳这回答了你的问题