Enumerable.OfType<(Of <(TResult>)>) 方法

 

根据指定类型筛选 IEnumerable 的元素。

命名空间:  System.Linq
程序集:  System.Core(在 System.Core.dll 中)

此方法通过使用延迟执行实现。即时返回值为一个对象,该对象存储执行操作所需的所有信息。只有通过直接调用对象的 GetEnumerator 方法或使用 Visual C# 中的 foreach(或 Visual Basic 中的 For Each)来枚举该对象时,才执行此方法表示的查询。

OfType<(Of <(TResult>)>)(IEnumerable) 方法仅返回 source 中那些可以转换为 TResult 类型的元素。如果元素不能转换为 TResult 类型,但却不想接收异常,则使用 Cast<(Of <(TResult>)>)(IEnumerable)

此方法是少数标准查询运算符方法之一,标准查询运算符方法可应用于含有非参数化类型(如 ArrayList)的集合。这是因为 OfType<(Of <(TResult>)>) 扩展了类型 IEnumerableOfType<(Of <(TResult>)>) 不仅无法应用于基于参数化的 IEnumerable<(Of <(T>)>) 类型的集合,也无法应用于基于非参数化的 IEnumerable 类型的集合。

通过将 OfType<(Of <(TResult>)>) 应用于实现 IEnumerable 的集合,可以获得使用标准查询运算符查询集合的能力。例如,将 Object 的类型参数指定为 OfType<(Of <(TResult>)>) 将返回一个对象,其类型为 C# 中的 IEnumerable<Object>IEnumerable(Of Object) 中的 Visual Basic,标准查询运算符可应用于该对象。

C#代码:

Code
原文地址:https://www.cnblogs.com/qishichang/p/1491625.html