Conversión de tipos de datos (Visual Basic)
Los métodos de conversión cambian el tipo de los objetos de entrada.
Las operaciones de conversión en las consultas LINQ son útiles en una serie de aplicaciones. A continuación se muestran algunos ejemplos.
El método Enumerable.AsEnumerable puede usarse para ocultar una implementación personalizada de tipo de un operador de consulta estándar.
El método Enumerable.OfType puede usarse para permitir colecciones no parametrizadas para las consultas LINQ.
Los métodos Enumerable.ToArray, Enumerable.ToDictionary, Enumerable.ToList y Enumerable.ToLookup pueden usarse para aplicar la ejecución de consultas inmediata en lugar de aplazarla hasta que se enumere la consulta.
Métodos
En la siguiente tabla se muestran los métodos de operadores de consulta estándar que efectúan conversiones de tipo de datos.
Los métodos de conversión de esta tabla cuyos nombres comienzan por "As" cambian el tipo estático de la colección de origen, pero no lo enumeran. Los métodos cuyos nombres empiezan por "To" enumeran la colección de origen y colocan los elementos en el tipo de colección correspondiente.
Nombre del método | Descripción | Sintaxis de expresiones de consulta de Visual Basic | Más información |
---|---|---|---|
AsEnumerable | Devuelve la entrada con tipo como IEnumerable<T>. | No es aplicable. | Enumerable.AsEnumerable |
AsQueryable | Convierte un IEnumerable (genérico) en un IQueryable (genérico). | No es aplicable. | Queryable.AsQueryable |
Conversión de tipos explícita | Convierte los elementos de una colección en un tipo especificado. | From … As … |
Enumerable.Cast Queryable.Cast |
OfType | Filtra valores en función de su capacidad para convertirse en un tipo especificado. | No es aplicable. | Enumerable.OfType Queryable.OfType |
ToArray | Convierte una colección en una matriz. Este método fuerza la ejecución de la consulta. | No es aplicable. | Enumerable.ToArray |
ToDictionary | Coloca elementos en Dictionary<TKey,TValue> basándose en una función de selector de claves. Este método fuerza la ejecución de la consulta. | No es aplicable. | Enumerable.ToDictionary |
ToList | Convierte una colección en List<T>. Este método fuerza la ejecución de la consulta. | No es aplicable. | Enumerable.ToList |
ToLookup | Coloca elementos en una Lookup<TKey,TElement> (un diccionario uno a varios) basándose en una función de selector de claves. Este método fuerza la ejecución de la consulta. | No es aplicable. | Enumerable.ToLookup |
Ejemplo de sintaxis de expresiones de consulta
En el ejemplo de código siguiente se usa una cláusula From As
para convertir un tipo en un subtipo antes de acceder a un miembro que solo está disponible en el subtipo.
Class Plant
Public Property Name As String
End Class
Class CarnivorousPlant
Inherits Plant
Public Property TrapType As String
End Class
Sub Cast()
Dim plants() As Plant = {
New CarnivorousPlant With {.Name = "Venus Fly Trap", .TrapType = "Snap Trap"},
New CarnivorousPlant With {.Name = "Pitcher Plant", .TrapType = "Pitfall Trap"},
New CarnivorousPlant With {.Name = "Sundew", .TrapType = "Flypaper Trap"},
New CarnivorousPlant With {.Name = "Waterwheel Plant", .TrapType = "Snap Trap"}}
Dim query = From plant As CarnivorousPlant In plants
Where plant.TrapType = "Snap Trap"
Select plant
Dim sb As New System.Text.StringBuilder()
For Each plant In query
sb.AppendLine(plant.Name)
Next
' Display the results.
MsgBox(sb.ToString())
' This code produces the following output:
' Venus Fly Trap
' Waterwheel Plant
End Sub