Esta documentación está archivada y no tiene mantenimiento.

Enumerable.OfType<TResult> (Método)

Actualización: noviembre 2007

Filtra los elementos de IEnumerable en función de un tipo especificado.

Espacio de nombres:  System.Linq
Ensamblado:  System.Core (en System.Core.dll)

public static IEnumerable<TResult> OfType<TResult>(
	this IEnumerable source
)

J# admite el uso de APIs genéricas pero no admite la declaración de nuevas API.
JScript no admite el uso de métodos ni tipos genéricos.

Parámetros de tipo

TResult

El tipo según el cual se van a filtrar los elementos de la secuencia.

Parámetros

source
Tipo: System.Collections.IEnumerable
IEnumerable cuyos elementos se van a filtrar.

Valor devuelto

Tipo: System.Collections.Generic.IEnumerable<TResult>
Una interfaz IEnumerable<T> que contiene los elementos de la secuencia de entrada de tipo TResult.

Nota sobre el uso

En Visual Basic y C#, se puede llamar a este método como a un método de instancia en cualquier objeto de tipo IEnumerable. Cuando emplee la sintaxis del método de instancia para llamar a este método, omita el primer parámetro. Para obtener más información, vea Métodos de extensión (Visual Basic) o Métodos de extensión (Guía de programación de C#).

ExcepciónCondición
ArgumentNullException

source es null.

Este método se implementa usando la ejecución diferida. El valor devuelto inmediato es un objeto que almacena toda la información necesaria para realizar la acción. La consulta representada por este método no se ejecuta hasta que se enumera el objeto mediante una llamada directa a su método GetEnumerator o a través de foreach en Visual C# o For Each en Visual Basic.

El método OfType<TResult>(IEnumerable) devuelve sólo los elementos de source que se pueden convertir al tipo TResult. Si desea recibir, en su lugar, una excepción en caso de que un elemento no se pueda convertir al tipo TResult, utilice Cast<TResult>(IEnumerable).

Este método es uno de los pocos métodos de operador de consulta estándar que se puede aplicar a una colección que tiene un tipo no parametrizado, como ArrayList. Esto se debe a que OfType<TResult> extiende el tipo IEnumerable. OfType<TResult> no solo puede aplicarse a las colecciones basadas en el tipo IEnumerable<T> parametrizado sino también a las colecciones basadas en el tipo IEnumerable no parametrizado.

Si aplica OfType<TResult> a una colección que implemente IEnumerable, podrá consultar la colección utilizando operadores de consulta estándar. Por ejemplo, al especificar un argumento de tipo de Object en OfType<TResult>, se devolverá un objeto de tipo IEnumerable<Object> en C# o de tipo IEnumerable(Of Object) en Visual Basic al que se pueden aplicar los operadores de consulta estándar.

En el ejemplo de código siguiente se muestra cómo se utiliza OfType<TResult> para filtrar los elementos de IEnumerable.

System.Collections.ArrayList fruits = new System.Collections.ArrayList(4);
fruits.Add("Mango");
fruits.Add("Orange");
fruits.Add("Apple");
fruits.Add(3.0);
fruits.Add("Banana");

// Apply OfType() to the ArrayList.
IEnumerable<string> query1 = fruits.OfType<string>();

Console.WriteLine("Elements of type 'string' are:");
foreach (string fruit in query1)
{
    Console.WriteLine(fruit);
}

// The following query shows that the standard query operators such as 
// Where() can be applied to the ArrayList type after calling OfType().
IEnumerable<string> query2 =
    fruits.OfType<string>().Where(fruit => fruit.ToLower().Contains("n"));

Console.WriteLine("\nThe following strings contain 'n':");
foreach (string fruit in query2)
{
    Console.WriteLine(fruit);
}

// This code produces the following output:
//
// Elements of type 'string' are:
// Mango
// Orange
// Apple
// Banana
//
// The following strings contain 'n':
// Mango
// Orange
// Banana



Windows Vista, Windows XP SP2, Windows Server 2003, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5

.NET Compact Framework

Compatible con: 3.5
Mostrar: