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