Sdílet prostřednictvím


Převádění datových typů

Metody převodu změnit typ vstupní objekty.

Operace převodu v LINQ dotazy jsou užitečné v různých aplikacích.Následuje několik příkladů:

Metody

Následující tabulka obsahuje metody operátor standardního dotazu, které provádět převody datového typu.

Metody převodu v této tabulce, jejichž názvy začínají řetězcem "Jako" změnit statického typu zdrojové kolekce, ale není k jejich výčet.Zadejte metody, jejichž názvy začínají řetězcem "Na výčet kolekce zdroje a položky do odpovídající kolekce".

Název metody

Description

Syntaxi výrazu dotazu C#

Visual BasicSyntaxe dotazu výraz

Další informace

Jako výčet

Vrátí vstup zadaný jako IEnumerable.

Nelze použít

Nelze použít

Enumerable.AsEnumerable``1

AsQueryable

Převede (Obecné) IEnumerable k (Obecné) IQueryable.

Nelze použít

Nelze použít

Queryable.AsQueryable

Změna typu

Vrhá prvků kolekce do zadaného typu.

Pomocí proměnné explicitně zadaný rozsah.Příklad:

from string str in words

From … As …

Enumerable.Cast``1

Queryable.Cast``1

OfType

Hodnoty v závislosti na jejich schopnost přetypovat na zadaný typ filtrů.

Nelze použít

Nelze použít

Enumerable.OfType``1

Queryable.OfType``1

ToArray

Kolekce převede na matici.Tato metoda vynutí spuštění dotazu.

Nelze použít

Nelze použít

Enumerable.ToArray``1

ToDictionary

Umístí prvky do Dictionary základě volič klíčové funkce.Tato metoda vynutí spuštění dotazu.

Nelze použít

Nelze použít

Enumerable.ToDictionary``2

ToList

Kolekce se převede List.Tato metoda vynutí spuštění dotazu.

Nelze použít

Nelze použít

Enumerable.ToList``1

ToLookup

Umístí prvky do Lookup (slovník n) založené na volič klíčové funkce.Tato metoda vynutí spuštění dotazu.

Nelze použít

Nelze použít

Enumerable.ToLookup``2

Příklad syntaxe výraz dotazu

Následující příklad kódu používá proměnnou explicitně zadán rozsah v C# nebo From As v klauzuli Visual Basic k typu a podtypu odevzdaných před přístupem člen, který je k dispozici pouze na podtyp.

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
    */
}

Viz také

Úkoly

Postupy: Vytvoření dotazu na ArrayList pomocí LINQ

Referenční dokumentace

from clause (Referenční dokumentace jazyka C#)

From – klauzule (Visual Basic)

System.Linq

Koncepty

Přehled standardních operátorů dotazu

LINQ – výrazy dotazů (Průvodce programováním v C#)