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

Tanım

Öğesinin IEnumerable öğelerini belirtilen türe göre filtreler.

C#
public static System.Collections.Generic.IEnumerable<TResult> OfType<TResult> (this System.Collections.IEnumerable source);

Tür Parametreleri

TResult

Dizinin öğelerinin filtreleneceği tür.

Parametreler

source
IEnumerable

Filtre IEnumerable uygulanacak öğeleri.

Döndürülenler

IEnumerable<TResult>

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

Özel durumlar

source, null değeridir.

Örnekler

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

C#
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

Açıklamalar

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

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

Bu yöntem, gibi ArrayListparametresiz 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 IEnumerable<T> türü temel alan koleksiyonlara uygulanamaz, ancak parametrelendirilmemiş 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, için türünde bir bağımsız değişken ObjectOfType belirtmek, C# veya IEnumerable(Of Object) Visual Basic'te standart sorgu işleçlerinin uygulanabileceği türde IEnumerable<Object> bir nesne döndürür.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0