Enumerable.OfType<TResult>(IEnumerable) Yöntem

Tanım

Belirtilen türe göre bir IEnumerable öğesinin öğelerini filtreler.

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)

Tür Parametreleri

TResult

Dizinin öğelerinin filtreleneceği tür.

Parametreler

source
IEnumerable

Öğeleri IEnumerable filtrelenen.

Döndürülenler

IEnumerable<TResult>

IEnumerable<T> türündeki TResultgiriş dizisinden öğeleri içeren bir .

Özel durumlar

source, null'e eşittir.

Örnekler

Aşağıdaki kod örneği, bir OfTypeöğesinin öğelerini filtrelemek için nasıl kullanılacağını IEnumerable gösterir.

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

Açıklamalar

Bu yöntem ertelenen yürütme kullanılarak uygulanır. Hemen dönüş değeri, eylemi gerçekleştirmek için gereken tüm bilgileri depolayan bir nesnedir. Bu yöntemle temsil edilen sorgu, nesne doğrudan GetEnumerator yöntemini çağırarak veya C# içinde foreach veya Visual Basic'de For Each kullanılarak numaralandırılana kadar yürütülür.

OfType<TResult>(IEnumerable) yöntemi yalnızca içinde source null olmayan ve türüyle TResultuyumlu olan öğeleri döndürür. Bir öğe türüne TResultgeçirilemiyorsa bir özel durum almak için kullanın Cast<TResult>(IEnumerable).

Bu yöntem, gibi ArrayListparametrelenmemiş bir türe sahip bir koleksiyona uygulanabilen birkaç standart sorgu işleci yönteminden biridir. Bunun nedeni OfType , türünü IEnumerablegenişletmesidir. OfType yalnızca parametreli türü temel alan koleksiyonlara uygulanamaz, ancak parametrelenmemiş IEnumerable<T>IEnumerable türü temel alan koleksiyonlar da uygulanır.

uygulayan OfType bir koleksiyona uygulayarak, standart sorgu işleçlerini IEnumerablekullanarak koleksiyonu sorgulama olanağı elde edersiniz. Örneğin, Object için OfType tür bağımsız değişkeninin belirtilmesi, C# dilinde IEnumerable<Object> veya standart sorgu işleçlerinin uygulanabileceği Visual Basic IEnumerable(Of Object) türünde bir nesne döndürür.

Şunlara uygulanır