Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Enumerable.AsEnumerable<TSource>-Methode (IEnumerable<TSource>)

 

Gibt die Eingabe als IEnumerable<T> zurück.

Namespace:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IEnumerable<TSource> AsEnumerable<TSource>(
	this IEnumerable<TSource> source
)

Parameter

source

Die Sequenz, die als IEnumerable<T> typisiert werden soll.

Rückgabewert

Type: System.Collections.Generic.IEnumerable<TSource>

Die als IEnumerable<T> typisierte Eingabesequenz.

Typparameter

TSource

Der Typ der Elemente von source.

Die AsEnumerable<TSource>(IEnumerable<TSource>)-Methode bewirkt lediglich, dass der Typ von source zur Kompilierzeit von einem Typ, der IEnumerable<T> implementiert, in den Typ IEnumerable<T> selbst geändert wird.

Mit AsEnumerable<TSource>(IEnumerable<TSource>) können Abfrageimplementierungen ausgewählt werden, wenn eine Sequenz IEnumerable<T> implementiert, jedoch ist für die Methode auch ein anderer Satz öffentlicher Abfragemethoden verfügbar.Wenn beispielsweise IEnumerable<T> von der generischen Klasse Table implementiert wird, die über eigene Methoden, z. B. Where, Select und SelectMany, verfügt, wird durch einen Aufruf von Where die öffentliche Where-Methode Table aufgerufen.Für einen Table-Typ, der eine Datenbanktabelle darstellt, kann eine Where-Methode vorhanden sein, die das Prädikatargument als Ausdrucksbaumstruktur verwendet und die Struktur für die Remoteausführung in SQL konvertiert.Wenn keine Remoteausführung erfolgen soll, beispielsweise weil das Prädikat eine lokale Methode aufruft, können mit der AsEnumerable<TSource>-Methode die benutzerdefinierten Methoden verborgen werden und stattdessen die Standardabfrageoperatoren verfügbar gemacht werden.

Im folgenden Codebeispiel wird gezeigt, wie mithilfe von AsEnumerable<TSource>(IEnumerable<TSource>) die benutzerdefinierte Where-Methode eines Typs verborgen wird, wenn die Implementierung des Standardabfrageoperators verwendet werden soll.

// Custom class.
class Clump<T> : List<T>
{
    // Custom implementation of Where().
    public IEnumerable<T> Where(Func<T, bool> predicate)
    {
        Console.WriteLine("In Clump's implementation of Where().");
        return Enumerable.Where(this, predicate);
    }
}

static void AsEnumerableEx1()
{
    // Create a new Clump<T> object.
    Clump<string> fruitClump =
        new Clump<string> { "apple", "passionfruit", "banana", 
            "mango", "orange", "blueberry", "grape", "strawberry" };

    // First call to Where():
    // Call Clump's Where() method with a predicate.
    IEnumerable<string> query1 =
        fruitClump.Where(fruit => fruit.Contains("o"));

    Console.WriteLine("query1 has been created.\n");

    // Second call to Where():
    // First call AsEnumerable() to hide Clump's Where() method and thereby
    // force System.Linq.Enumerable's Where() method to be called.
    IEnumerable<string> query2 =
        fruitClump.AsEnumerable().Where(fruit => fruit.Contains("o"));

    // Display the output.
    Console.WriteLine("query2 has been created.");
}

// This code produces the following output:
//
// In Clump's implementation of Where().
// query1 has been created.
//
// query2 has been created.

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 3.5
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen: