Queryable.OfType<TResult>(IQueryable) Yöntem

Tanım

Öğesinin IQueryable öğelerini belirtilen türe göre filtreler.

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)

Tür Parametreleri

TResult

Dizinin öğelerinin filtreleneceği tür.

Parametreler

source
IQueryable

Öğelerinin IQueryable filtreleneceği bir.

Döndürülenler

IQueryable<TResult>

türüne TResultsahip öğeleri source içeren bir koleksiyon.

Özel durumlar

source, null değeridir.

Örnekler

Aşağıdaki kod örneği, türündeki öğeler listesinden türünde PropertyInfo olmayan öğeleri MemberInfofiltrelemek için nasıl kullanılacağını OfType gösterir.

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

Açıklamalar

yöntemi, OfType kendisini oluşturulan genel bir MethodCallExpression yöntem olarak çağıran OfType bir oluşturur. Ardından parametresinin MethodCallExpressionCreateQuery(Expression) özelliği tarafından temsil edilen yöntemine IQueryProviderProvidersource iletir.

Çağrıyı OfType temsil eden bir ifade ağacının yürütülmesi sonucunda oluşan sorgu davranışı, parametre türünün uygulanmasına source bağlıdır. Beklenen davranış, içindeki source türünde TResultolmayan öğeleri filtrelemesidir.

Şunlara uygulanır