-3

您能帮我将 BaseClass 的 ObservableCollection 转换为 DerivedClass 的 IEnumerable 吗?

谢谢。

4

2 回答 2

5

如果您知道所有项目都是派生对象,请使用 LINQ Enumerable.Cast

var enumerable = collection.Cast<DerivedClass>();

如果集合中的任何项目实际上不是DerivedClass.

如果集合可能包含非派生对象并且您只想要那些派生对象:

var enumerable = collection.OfType<DerivedClass>();
于 2012-09-21T13:32:42.793 回答
2

如果您确定所有项目实际上都是派生类型,则使用Cast

IEnumerable<DerivedClass> results = observableCollection.Cast<DerivedClass>();

如果有些可能不是那种类型,那么使用

IEnumerable<DerivedClass> results = observableCollection.OfType<DerivedClass>();

Cast如果无法投射任何项目,将引发异常,OfType根本不会将它们包含在结果中。

于 2012-09-21T13:32:45.597 回答