Enumerable.OfType<TResult>(IEnumerable) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Memfilter elemen berdasarkan IEnumerable jenis yang ditentukan.
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)
Jenis parameter
- TResult
Jenis untuk memfilter elemen urutan.
Parameter
- source
- IEnumerable
elemen IEnumerable yang akan difilter.
Mengembalikan
Yang IEnumerable<T> berisi elemen dari urutan input jenis TResult
.
Pengecualian
source
adalah null
.
Contoh
Contoh kode berikut menunjukkan cara menggunakan OfType untuk memfilter elemen .IEnumerable
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
Keterangan
Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator
secara langsung atau dengan menggunakan foreach
di C# atau For Each
di Visual Basic.
Metode ini OfType<TResult>(IEnumerable) hanya mengembalikan elemen-elemen dalam source
yang tidak null dan kompatibel dengan jenis TResult
. Untuk menerima pengecualian jika elemen tidak dapat dilemparkan ke jenis TResult
, gunakan Cast<TResult>(IEnumerable).
Metode ini adalah salah satu dari beberapa metode operator kueri standar yang dapat diterapkan ke koleksi yang memiliki jenis non-parameter, seperti ArrayList. Ini karena OfType memperluas jenis IEnumerable. OfType tidak hanya dapat diterapkan ke koleksi yang didasarkan pada jenis parameter IEnumerable<T> , tetapi koleksi yang didasarkan pada jenis non-parameter juga IEnumerable .
Dengan menerapkan OfType ke koleksi yang mengimplementasikan IEnumerable, Anda mendapatkan kemampuan untuk mengkueri koleksi dengan menggunakan operator kueri standar. Misalnya, menentukan argumen Object jenis untuk OfType akan mengembalikan objek jenis IEnumerable<Object>
di C# atau IEnumerable(Of Object)
di Visual Basic, tempat operator kueri standar dapat diterapkan.