Queryable.OfType<TResult>(IQueryable) 메서드

정의

지정된 형식에 따라 IQueryable의 요소를 필터링합니다.Filters the elements of an IQueryable based on a specified type.

public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TResult> ^ OfType(System::Linq::IQueryable ^ source);
public static System.Linq.IQueryable<TResult> OfType<TResult> (this System.Linq.IQueryable source);
static member OfType : System.Linq.IQueryable -> System.Linq.IQueryable<'Result>
<Extension()>
Public Function OfType(Of TResult) (source As IQueryable) As IQueryable(Of TResult)

형식 매개 변수

TResult

시퀀스의 요소를 필터링할 형식입니다.The type to filter the elements of the sequence on.

매개 변수

source
IQueryable

요소를 필터링할 IQueryable입니다.An IQueryable whose elements to filter.

반환

IQueryable<TResult>

형식이 sourceTResult의 요소가 들어 있는 컬렉션입니다.A collection that contains the elements from source that have type TResult.

예외

source이(가) null인 경우source is null.

예제

다음 코드 예제에서는를 사용 하 여 OfType PropertyInfo 형식의 요소 목록에서 형식이 아닌 요소를 필터링 하는 방법을 보여 줍니다 MemberInfo .The following code example demonstrates how to use OfType to filter out elements that are not of type PropertyInfo from a list of elements of type MemberInfo.

// 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
*/

' Create a list of MemberInfo objects.
Dim members As List(Of System.Reflection.MemberInfo) = GetType(String).GetMembers().ToList()

' Return only those items that can be cast to type PropertyInfo.
Dim propertiesOnly As IQueryable(Of System.Reflection.PropertyInfo) = _
        members.AsQueryable().OfType(Of System.Reflection.PropertyInfo)()

Dim output As New System.Text.StringBuilder
output.AppendLine("Members of type 'PropertyInfo' are:")
For Each pi As System.Reflection.PropertyInfo In propertiesOnly
    output.AppendLine(pi.Name)
Next

' Display the output.
MsgBox(output.ToString())

' This code produces the following output:

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

설명

OfType메서드는 자신을 MethodCallExpression 생성 된 제네릭 메서드로 호출 하는을 생성 합니다 OfType .The OfType method generates a MethodCallExpression that represents calling OfType itself as a constructed generic method. 그런 다음 MethodCallExpression CreateQuery(Expression) IQueryProvider Provider 매개 변수의 속성이 나타내는의 메서드에를 전달 합니다 source .It then passes the MethodCallExpression to the CreateQuery(Expression) method of the IQueryProvider represented by the Provider property of the source parameter.

호출을 나타내는 식 트리를 실행 한 결과로 발생 하는 쿼리 동작은 OfType 매개 변수의 형식 구현에 따라 달라 집니다 source .The query behavior that occurs as a result of executing an expression tree that represents calling OfType depends on the implementation of the type of the source parameter. 예상 되는 동작은 형식이 아닌의 모든 요소를 필터링 하는 것입니다 source TResult .The expected behavior is that it filters out any elements in source that are not of type TResult.

적용 대상