Konvertieren von Datentypen (C#)

Konvertierungsmethoden ändern den Typ von Eingabeobjekten.

Konvertierungsvorgänge in LINQ-Abfragen sind in vielen Anwendungen nützlich. Nachstehend sind einige Beispiele aufgeführt:

  • Die <xref:System.Linq.Enumerable.AsEnumerable%2A?displayProperty=fullName>-Methode kann zum Ausblenden einer benutzerdefinierten Implementierung eines Standardabfrageoperators eines Typs verwendet werden.

  • Die <xref:System.Linq.Enumerable.OfType%2A?displayProperty=fullName>-Methode kann verwendet werden, um nicht parametrisierte Auflistungen für LINQ-Abfragen zu ermöglichen.

  • Die Methoden <xref:System.Linq.Enumerable.ToArray%2A?displayProperty=fullName>, <xref:System.Linq.Enumerable.ToDictionary%2A?displayProperty=fullName>, <xref:System.Linq.Enumerable.ToList%2A?displayProperty=fullName> und <xref:System.Linq.Enumerable.ToLookup%2A?displayProperty=fullName> können verwendet werden, um die sofortige Ausführung einer Abfrage zu erzwingen, statt sie zu verzögern, bis die Abfrage enumeriert wurde.

Methoden

Die folgende Tabelle enthält die Standardabfrageoperator-Methoden, die Datentypumwandlungen ausführen.

Die Konvertierungsmethoden in dieser Tabelle, deren Namen mit „As“ beginnen, ändern den statischen Typ der Quellauflistung, listen ihn jedoch nicht auf. Die Methoden, deren Namen mit „To“ anfangen, listen die Quellauflistung auf und verschieben die Elemente in den entsprechenden Auflistungstyp.

Methodenname Beschreibung C#-Abfrageausdruckssyntax Weitere Informationen
AsEnumerable Gibt die Eingabe als <xref:System.Collections.Generic.IEnumerable%601> typisiert zurück Nicht zutreffend. <xref:System.Linq.Enumerable.AsEnumerable%2A?displayProperty=fullName>
AsQueryable Konvertiert ein (generisches) <xref:System.Collections.IEnumerable>-Element in ein (generisches) <xref:System.Linq.IQueryable>-Element Nicht zutreffend. <xref:System.Linq.Queryable.AsQueryable%2A?displayProperty=fullName>
Typumwandlung Kopiert die Elemente einer Auflistung in einen bestimmten Typ. Verwenden Sie eine explizit typisierte Bereichsvariable. Zum Beispiel:

from string str in words
<xref:System.Linq.Enumerable.Cast%2A?displayProperty=fullName>

<xref:System.Linq.Queryable.Cast%2A?displayProperty=fullName>
OfType Filtert Werte, je nach ihrer Fähigkeit, die in einen angegebenen Typ umgewandelt werden sollen. Nicht zutreffend. <xref:System.Linq.Enumerable.OfType%2A?displayProperty=fullName>

<xref:System.Linq.Queryable.OfType%2A?displayProperty=fullName>
ToArray Konvertiert eine Auflistung in ein Array. Diese Methode erzwingt die Ausführung der Abfrage. Nicht zutreffend. <xref:System.Linq.Enumerable.ToArray%2A?displayProperty=fullName>
ToDictionary Platziert Elemente in ein <xref:System.Collections.Generic.Dictionary%602> auf Grundlage einer Schlüsselauswahlfunktion. Diese Methode erzwingt die Ausführung der Abfrage. Nicht zutreffend. <xref:System.Linq.Enumerable.ToDictionary%2A?displayProperty=fullName>
ToList Konvertiert eine Auflistung in eine <xref:System.Collections.Generic.List%601>. Diese Methode erzwingt die Ausführung der Abfrage. Nicht zutreffend. <xref:System.Linq.Enumerable.ToList%2A?displayProperty=fullName>
ToLookup Platziert Elemente, basierend auf einer Schlüsselauswahlfunktion, in ein <xref:System.Linq.Lookup%602> (one-to-many-Wörterbuch) ein. Diese Methode erzwingt die Ausführung der Abfrage. Nicht zutreffend. <xref:System.Linq.Enumerable.ToLookup%2A?displayProperty=fullName>

Beispiel für die Abfrageausdruckssyntax

Das folgende Codebeispiel verwendet eine explizit typisierte Bereichsvariable, um einen Typ vor dem Zugriff auf ein Element, das nur im Untertyp verfügbar ist, in einen Untertyp umzuwandeln.

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

Siehe auch

<xref:System.Linq>
Übersicht über Standardabfrageoperatoren (C#)
From-Klausel
LINQ-Abfrageausdrücke
Vorgehensweise: Abfragen von ArrayList mit LINQ (C#)