Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Enumerable.OfType(Of TResult)(IEnumerable)

 

Publicado: octubre de 2016

Filtra los elementos de un IEnumerable basado en un tipo especificado.

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

<ExtensionAttribute>
Public Shared Function OfType(Of TResult) (
	source As IEnumerable
) As IEnumerable(Of TResult)

Parámetros

source
Type: System.Collections.IEnumerable

El IEnumerable cuyos elementos para filtrar.

Valor devuelto

Type: System.Collections.Generic.IEnumerable(Of TResult)

Un IEnumerable(Of T) que contiene los elementos de la secuencia de entrada de tipo TResult.

Parámetros de tipo

TResult

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

Exception Condition
ArgumentNullException

El valor de source es null.

Este método se implementa mediante 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 llamando a su GetEnumerator método directamente o mediante foreach en Visual C# o For Each en Visual Basic.

El OfType<'TResult>(IEnumerable) método devuelve sólo los elementos de source que se puede convertir al tipo TResult. Para recibir en su lugar una excepción si un elemento no se puede convertir al tipo TResult, utilice Cast(Of TResult)(IEnumerable).

Este método es uno de los pocos métodos de operador de consulta estándar que se pueden aplicar a una colección que tiene un tipo sin parámetros, como un ArrayList. Esto es porque OfType<'TResult> extiende el tipo IEnumerable. OfType<'TResult> no se puede aplicar sólo a las colecciones que se basan en parametrizado IEnumerable(Of T) tipo, pero las colecciones que se basan en el sin parámetros IEnumerable Escriba también.

Aplicando OfType<'TResult> a una colección que implementa IEnumerable, ofrece la posibilidad de consultar la colección mediante los operadores de consulta estándar. Por ejemplo, al especificar un argumento de tipo de Object a OfType<'TResult> devolvería un objeto de tipo IEnumerable<Object> en C# o IEnumerable(Of Object) en Visual Basic, para que se pueden aplicar los operadores de consulta estándar.

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

' Create an ArrayList and add items to it.
Dim fruits As New System.Collections.ArrayList(4)
fruits.Add("Mango")
fruits.Add("Orange")
fruits.Add("Apple")
fruits.Add(3.0)
fruits.Add("Banana")

' Apply OfType(Of String)() to the ArrayList
' to filter out non-string items.
Dim query1 As IEnumerable(Of String) = fruits.OfType(Of String)()

' Print the results.
Dim output As New System.Text.StringBuilder("Elements of type 'string' are:" _
                                        & vbCrLf)
For Each fruit As String In query1
    output.AppendLine(fruit)
Next

' The following query shows that the standard query operators such as 
' Where() can be applied to the ArrayList type after calling OfType().
Dim query2 As IEnumerable(Of String) =
fruits.OfType(Of String)().Where(Function(fruit) _
                                     fruit.ToLower().Contains("n"))

output.AppendLine(vbCrLf & "The following strings contain 'n':")
For Each fruit As String In query2
    output.AppendLine(fruit)
Next

' Display the output.
MsgBox(output.ToString())

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

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 3.5
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: