你能帮我把BaseClass的ObservableCollection转换成DerivedClass的IEnumerable吗?
感谢。
答案 0 :(得分:3)
如果您知道所有项都是派生对象,那么请使用LINQ的Enumerable.Cast
:
var enumerable = collection.Cast<DerivedClass>();
如果集合中的任何项目实际上不是DerivedClass
,则会抛出上述内容。
如果集合可能包含非派生对象,并且您只需要派生的对象:
var enumerable = collection.OfType<DerivedClass>();
答案 1 :(得分:1)
如果您确定所有项目实际上都是派生类型,请使用Cast
IEnumerable<DerivedClass> results = observableCollection.Cast<DerivedClass>();
如果有些可能不属于那种类型,请使用
IEnumerable<DerivedClass> results = observableCollection.OfType<DerivedClass>();
如果无法投放任何项目, Cast
将抛出异常,OfType
将不会将其包含在结果中。