Enumerable.OfType<TResult>(IEnumerable) Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Öğesinin IEnumerable öğelerini belirtilen türe göre 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
Filtre IEnumerable uygulanacak öğeleri.
Döndürülenler
IEnumerable<T> türündeki TResult
giriş 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.
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 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 TResult
uyumlu olan öğeleri döndürür. Bir öğe türüne TResult
geç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.