Queryable.OfType<TResult>(IQueryable) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Filtra os elementos de um IQueryable com base em um tipo especificado.
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)
Parâmetros de tipo
- TResult
O tipo no qual filtrar os elementos da sequência.
Parâmetros
- source
- IQueryable
Um IQueryable cujos elementos devem ser filtrados.
Retornos
Uma coleção que contém os elementos de source
que tem o tipo TResult
.
Exceções
source
é null
.
Exemplos
O exemplo de código a seguir demonstra como usar OfType
para filtrar elementos que não são do tipo PropertyInfo de uma lista de elementos do tipo 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
Comentários
O OfType
método gera um MethodCallExpression que representa chamar OfType
a si mesmo como um método genérico construído. Em seguida, ele passa o MethodCallExpression para o CreateQuery(Expression) método do IQueryProvider representado pela Provider propriedade do source
parâmetro .
O comportamento da consulta que ocorre como resultado da execução de uma árvore de expressão que representa a chamada OfType
depende da implementação do tipo do source
parâmetro. O comportamento esperado é que ele filtra todos os elementos no source
que não são do tipo TResult
.