Queryable.OfType<TResult>(IQueryable) 方法

定义

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

public static System.Linq.IQueryable<TResult> OfType<TResult> (this System.Linq.IQueryable source);

类型参数

TResult

筛选序列元素所根据的类型。

参数

source
IQueryable

要对其元素进行筛选的 IQueryable

返回

IQueryable<TResult>

一个集合,包含 source 中的类型为 TResult 的元素。

例外

sourcenull

示例

下面的代码示例演示如何使用 OfType 从 类型PropertyInfoMemberInfo为 的元素列表中筛选出非类型的元素。

// Create a list of MemberInfo objects.
List<System.Reflection.MemberInfo> members = typeof(String).GetMembers().ToList();

// Return only those items that can be cast to type PropertyInfo.
IQueryable<System.Reflection.PropertyInfo> propertiesOnly =
    members.AsQueryable().OfType<System.Reflection.PropertyInfo>();

Console.WriteLine("Members of type 'PropertyInfo' are:");
foreach (System.Reflection.PropertyInfo pi in propertiesOnly)
    Console.WriteLine(pi.Name);

/*
    This code produces the following output:

    Members of type 'PropertyInfo' are:
    Chars
    Length
*/

注解

方法 OfType 生成一个 , MethodCallExpression 表示将调用 OfType 自身作为构造的泛型方法。 然后,MethodCallExpressionCreateQuery(Expression)它将 传递给 由 Provider 参数的 属性表示的 的 source 方法IQueryProvider

由于执行表示调用 OfType 的表达式树而发生的查询行为取决于参数类型的 source 实现。 预期的行为是,它会筛选掉中 source 任何不是 类型的 TResult元素。

适用于

产品 版本
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0