Convertir tipos de datos

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 varios sentidos. A continuación se ofrecen algunos ejemplos:

Métodos

En la tabla siguiente se enumeran los métodos de operador de consulta estándar que realizan conversiones de tipos de datos.

Los métodos de conversión de esta tabla cuyo nombre comienza 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 las expresiones de consulta de C#

Sintaxis de las expresiones de consulta de Visual Basic

Más información

AsEnumerable

Devuelve la entrada tipificada como IEnumerable.

No es aplicable

No es aplicable

Enumerable.AsEnumerable``1

AsQueryable

Convierte una interfaz IEnumerable (genérica) en una interfaz IQueryable (genérica).

No es aplicable

No es aplicable

Queryable.AsQueryable

Conversión de tipos explícita

Convierte los elementos de una colección a un tipo especificado.

Utilice una variable de rango con tipo explícito. Por ejemplo:

from string str in words

From … As …

Enumerable.Cast``1

Queryable.Cast``1

OfType

Filtra valores en función de si pueden o no convertirse a un tipo especificado.

No es aplicable

No es aplicable

Enumerable.OfType``1

Queryable.OfType``1

ToArray

Convierte una colección en una matriz. Este método fuerza la ejecución de la consulta.

No es aplicable

No es aplicable

Enumerable.ToArray``1

ToDictionary

Coloca los elementos en Dictionary según una función del selector de claves. Este método fuerza la ejecución de la consulta.

No es aplicable

No es aplicable

Enumerable.ToDictionary``2

ToList

Convierte una colección a List. Este método fuerza la ejecución de la consulta.

No es aplicable

No es aplicable

Enumerable.ToList``1

ToLookup

Coloca los elementos en un objeto Lookup (diccionario uno a varios) según una función del selector de claves. Este método fuerza la ejecución de la consulta.

No es aplicable

No es aplicable

Enumerable.ToLookup``2

Ejemplo de sintaxis de expresiones de consulta

En el ejemplo de código siguiente, se usa una variable de rango tipificada explícitamente (C#) o la cláusula From As (Visual Basic) para convertir un tipo en un subtipo antes de obtener acceso 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
class Plant
{
    public string Name { get; set; }
}

class CarnivorousPlant : Plant
{
    public string TrapType { get; set; }
}

static void Cast()
{
    Plant[] plants = new Plant[] {
        new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
        new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
        new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
        new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
    };

    var query = from CarnivorousPlant cPlant in plants
                where cPlant.TrapType == "Snap Trap" 
                select cPlant;

    foreach (Plant plant in query)
        Console.WriteLine(plant.Name);

    /* This code produces the following output:

        Venus Fly Trap
        Waterwheel Plant
    */
}

Vea también

Tareas

Cómo: Consultar un objeto ArrayList con LINQ

Referencia

from (Cláusula, Referencia de C#)

From (Cláusula, Visual Basic)

System.Linq

Conceptos

Información general sobre operadores de consulta estándar

Expresiones de consultas LINQ (Guía de programación de C#)