您能帮我将 BaseClass 的 ObservableCollection 转换为 DerivedClass 的 IEnumerable 吗?
谢谢。
如果您知道所有项目都是派生对象,请使用 LINQ Enumerable.Cast
:
var enumerable = collection.Cast<DerivedClass>();
如果集合中的任何项目实际上不是DerivedClass
.
如果集合可能包含非派生对象并且您只想要那些派生对象:
var enumerable = collection.OfType<DerivedClass>();
如果您确定所有项目实际上都是派生类型,则使用Cast
IEnumerable<DerivedClass> results = observableCollection.Cast<DerivedClass>();
如果有些可能不是那种类型,那么使用
IEnumerable<DerivedClass> results = observableCollection.OfType<DerivedClass>();
Cast
如果无法投射任何项目,将引发异常,OfType
根本不会将它们包含在结果中。