Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Enumerable.OfType<TResult>-Methode

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs.

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

public static IEnumerable<TResult> OfType<TResult>(
	this IEnumerable source
)

Typparameter

TResult

Der Typ, nach dem die Elemente der Sequenz gefiltert werden sollen.

Parameter

source
Typ: System.Collections.IEnumerable
Das IEnumerable, dessen Elemente gefiltert werden sollen.

Rückgabewert

Typ: System.Collections.Generic.IEnumerable<TResult>
Ein IEnumerable<T>, das Elemente aus der Eingabesequenz vom Typ TResult enthält.

Hinweis zur Verwendung

In Visual Basic und C# können Sie diese Methode als Instanzenmethode für ein beliebiges Objekt vom Typ IEnumerable aufrufen. Bei Verwendung der Syntax für Instanzenmethoden lassen Sie den ersten Parameter aus. Weitere Informationen finden Sie unter Erweiterungsmethoden (Visual Basic) und Erweiterungsmethoden (C#-Programmierhandbuch).

AusnahmeBedingung
ArgumentNullException

source ist null.

Diese Methode wird mit verzögerter Ausführung implementiert. Der Wert der sofortigen Rückgabe ist ein Objekt, in dem alle zum Ausführen der Aktion erforderlichen Informationen gespeichert werden. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch den direkten Aufruf der zugehörigen GetEnumerator-Methode oder mithilfe von foreach in Visual C# oder For Each in Visual Basic aufgelistet wird.

Die OfType<TResult>(IEnumerable)-Methode gibt nur die Elemente in source zurück, die in den Typ TResult umgewandelt werden können. Um stattdessen eine Ausnahme zu erhalten, wenn ein Element nicht in den Typ TResult umgewandelt werden kann, verwenden Sie Cast<TResult>(IEnumerable).

Diese Methode ist eine der wenigen Standardabfrageoperator-Methoden, die auf eine Auflistung mit einem nicht parametrisierten Typ angewendet werden können, z. B. auf eine ArrayList. Das liegt daran, dass OfType<TResult> den IEnumerable-Typ erweitert. OfType<TResult> kann nicht nur auf Auflistungen angewendet werden, die auf dem parametrisierten IEnumerable<T>-Typ basieren, sondern auch auf Auflistungen, die auf dem nicht parametrisierten IEnumerable-Typ basieren.

Wenn Sie OfType<TResult> auf eine Auflistung anwenden, die IEnumerable implementiert, können Sie die Auflistung mit den Standardabfrageoperatoren abfragen. Wenn Sie beispielsweise für OfType<TResult> das Typargument Object angeben, wird ein Objekt vom Typ IEnumerable<Object> in C# oder IEnumerable(Of Object) in Visual Basic zurückgegeben, auf das die Standardabfrageoperatoren angewendet werden können.

Im folgenden Codebeispiel wird das Verwenden von OfType<TResult> zum Filtern der Elemente eines IEnumerable veranschaulicht.


            System.Collections.ArrayList fruits = new System.Collections.ArrayList(4);
            fruits.Add("Mango");
            fruits.Add("Orange");
            fruits.Add("Apple");
            fruits.Add(3.0);
            fruits.Add("Banana");

            // Apply OfType() to the ArrayList.
            IEnumerable<string> query1 = fruits.OfType<string>();

            Console.WriteLine("Elements of type 'string' are:");
            foreach (string fruit in query1)
            {
                Console.WriteLine(fruit);
            }

            // The following query shows that the standard query operators such as 
            // Where() can be applied to the ArrayList type after calling OfType().
            IEnumerable<string> query2 =
                fruits.OfType<string>().Where(fruit => fruit.ToLower().Contains("n"));

            Console.WriteLine("\nThe following strings contain 'n':");
            foreach (string fruit in query2)
            {
                Console.WriteLine(fruit);
            }

            // This code produces the following output:
            //
            // Elements of type 'string' are:
            // Mango
            // Orange
            // Apple
            // Banana
            //
            // The following strings contain 'n':
            // Mango
            // Orange
            // Banana



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft