C# 转换列表的最佳方式是什么<;MyObject>;列出<;IMyInterface>;?
我有一个物品清单。让我们把它们称为MyObject,我需要将它们转换为IMyInterface列表,因为我想将其他东西添加到列表中,这些东西不是MyObject,而是实现我的接口。我试过了,但没用C# 转换列表的最佳方式是什么<;MyObject>;列出<;IMyInterface>;?,c#,collections,interface,C#,Collections,Interface,我有一个物品清单。让我们把它们称为MyObject,我需要将它们转换为IMyInterface列表,因为我想将其他东西添加到列表中,这些东西不是MyObject,而是实现我的接口。我试过了,但没用 List<IMyInterface> myList = myObjectList; //myObjectList is a List<MyObject> List myList=myObjectList//myObjectList是一个列表 有什么建议吗?我是否需要预先
List<IMyInterface> myList = myObjectList; //myObjectList is a List<MyObject>
List myList=myObjectList//myObjectList是一个列表
有什么建议吗?我是否需要预先投射阵列中的每个项目?试试这个
List<IMyInterface> l = myList.OfType<IMyInterface>().ToList();
List l=myList.OfType().ToList();
myList.Cast().ToList()
OfType
也可以工作,但它是一个过滤器,而不是每个项目的转换。将n列表转换为接口列表非常简单,您所要做的就是将其添加到myobjectlist
的末尾,
您还可以使用mylistobject.Cast`
这里有一些有用的链接
链接1
链接2
链接3
OffType转换的完整代码
List<IMyInteface>1 = mylistobject.OfType(IMyInterface>().ToList() ;
您也可以使用此代码
List<target> targetList = new List<target>(originalList.Cast<target>());
List targetList=新列表(originalList.Cast());
Hop这回答了你的问题你需要
.ToList()
最后:)从语义上讲,使用Cast()
会更正确。这实际上是一个新的列表造成了op的问题吗?
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>());