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.

예외

sourcenull입니다.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. 그런 다음 전달를 MethodCallExpressionCreateQuery(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.

적용 대상