Enumerable.OfType<TResult>(IEnumerable) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
Ein IEnumerable<T>, das Elemente aus der Eingabesequenz vom Typ TResult
enthält
Ausnahmen
source
ist null
.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie sie verwenden, OfType um die Elemente eines IEnumerablezu filtern.
System.Collections.ArrayList fruits = new()
{
"Mango",
"Orange",
null,
"Apple",
3.0,
"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.Contains('n', StringComparison.CurrentCultureIgnoreCase));
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 ArrayList() From {
"Mango",
"Orange",
Nothing,
"Apple",
3.0,
"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.Contains("n"c, StringComparison.CurrentCultureIgnoreCase))
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 direktes Aufrufen der GetEnumerator
-Methode oder mithilfe foreach
von in C# oder For Each
in Visual Basic aufgezählt wird.
Die OfType<TResult>(IEnumerable) -Methode gibt nur die Elemente zurück source
, die nicht NULL sind und mit dem Typ TResult
kompatibel sind. Um 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 Standardabfrageoperatormethoden, die auf eine Auflistung angewendet werden können, die über einen nicht parametrisierten Typ verfügt, z. B. einen ArrayList. Dies liegt daran, dass OfType der Typ IEnumerableerweitert wird. OfType kann nicht nur auf Sammlungen angewendet werden, die auf dem parametrisierten IEnumerable<T> Typ basieren, sondern auch auf Sammlungen, die auf dem nicht parametrisierten IEnumerable Typ basieren.
Durch Anwenden auf OfType eine Auflistung, die implementiert IEnumerable, erhalten Sie die Möglichkeit, die Auflistung mithilfe der Standardabfrageoperatoren abzufragen. Wenn Sie beispielsweise ein Typargument von von ObjectOfType 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.