Queryable.OfType<TResult>(IQueryable) Method

Definition

지정된 형식에 따라 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)

Type Parameters

TResult

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

Parameters

source
IQueryable

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

Returns

IQueryable<TResult>

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

Exceptions

sourcenull입니다.source is null.

Examples

다음 코드 예제에서는 OfType를 사용 하 여 MemberInfo형식의 요소 목록에서 PropertyInfo 형식이 아닌 요소를 필터링 하는 방법을 보여 줍니다.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

Remarks

OfType 메서드는 생성 된 제네릭 메서드로 OfType 자체 호출을 나타내는 MethodCallExpression 생성 합니다.The OfType method generates a MethodCallExpression that represents calling OfType itself as a constructed generic method. 그런 다음 source 매개 변수의 Provider 속성이 나타내는 IQueryProviderCreateQuery(Expression) 메서드에 MethodCallExpression를 전달 합니다.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. 예상 되는 동작은 TResult형식이 아닌 source의 모든 요소를 필터링 하는 것입니다.The expected behavior is that it filters out any elements in source that are not of type TResult.

Applies to