Enumerable.OfType<TResult>(IEnumerable) Methode

Definition

Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs

public:
generic <typename TResult>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TResult> ^ OfType(System::Collections::IEnumerable ^ source);
public static System.Collections.Generic.IEnumerable<TResult> OfType<TResult> (this System.Collections.IEnumerable source);
static member OfType : System.Collections.IEnumerable -> seq<'Result>
<Extension()>
Public Function OfType(Of TResult) (source As IEnumerable) As IEnumerable(Of TResult)

Typparameter

TResult

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

Parameter

source
IEnumerable

Das IEnumerable, dessen Elemente gefiltert werden sollen

Gibt zurück

IEnumerable<TResult>

Ein IEnumerable<T>, das Elemente aus der Eingabesequenz vom Typ TResult enthält

Ausnahmen

source ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie zum OfType Filtern der Elemente eines verwendet IEnumerable wird.

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
' Create an ArrayList and add items to it.
Dim fruits As New System.Collections.ArrayList(4)
fruits.Add("Mango")
fruits.Add("Orange")
fruits.Add("Apple")
fruits.Add(3.0)
fruits.Add("Banana")

' Apply OfType(Of String)() to the ArrayList
' to filter out non-string items.
Dim query1 As IEnumerable(Of String) = fruits.OfType(Of String)()

' Print the results.
Dim output As New System.Text.StringBuilder("Elements of type 'string' are:" _
                                        & vbCrLf)
For Each fruit As String In query1
    output.AppendLine(fruit)
Next

' The following query shows that the standard query operators such as 
' Where() can be applied to the ArrayList type after calling OfType().
Dim query2 As IEnumerable(Of String) =
fruits.OfType(Of String)().Where(Function(fruit) _
                                     fruit.ToLower().Contains("n"))

output.AppendLine(vbCrLf & "The following strings contain 'n':")
For Each fruit As String In query2
    output.AppendLine(fruit)
Next

' Display the output.
Console.WriteLine(output.ToString())

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

Hinweise

Diese Methode wird mithilfe der verzögerten Ausführung implementiert. Der sofortige Rückgabewert ist ein Objekt, das alle Informationen speichert, die zum Ausführen der Aktion erforderlich sind. Die von dieser Methode dargestellte Abfrage wird erst ausgeführt, wenn das Objekt entweder durch direkten Aufruf der -Methode oder GetEnumerator foreach mithilfe von in Visual C# oder in For Each Visual Basic.

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

Diese Methode ist eine der wenigen Standardabfrageoperatormethoden, die auf eine Auflistung angewendet werden können, die über einen nicht parametrisierten Typ verfügt, z. ArrayList B. . Dies liegt OfType daran, dass den Typ IEnumerable erweitert. OfType kann nicht nur auf Auflistungen angewendet werden, die auf dem parametrisierten Typ basieren, sondern auch auf Auflistungen, die auf dem nicht IEnumerable<T> parametrisierten Typ IEnumerable basieren.

Durch Anwenden auf eine Auflistung, die implementiert, erhalten Sie die Möglichkeit, die Auflistung mithilfe der OfType IEnumerable Standardabfrageoperatoren abfragen. Wenn Sie beispielsweise ein Typargument von für angeben, würde ein Objekt vom Typ in C# oder in Visual Basic zurückgeben, auf das die Standardabfrageoperatoren Object OfType angewendet werden IEnumerable<Object> IEnumerable(Of Object) können.

Gilt für