Enumerable.OfType 方法 (IEnumerable)

世紀緣發表於2017-04-10

篩選的元素 IEnumerable 根據指定的型別。

名稱空間:   System.Linq
程式集:  System.Core(位於 System.Core.dll)

public static IEnumerable<TResult> OfType<TResult>(
	this IEnumerable source
)

引數

source
Type: System.Collections.IEnumerable

IEnumerable 要篩選其元素。

返回值

Type: System.Collections.Generic.IEnumerable<TResult>

IEnumerable<T> ,其中包含輸入序列中的元素型別 TResult

型別引數

TResult

篩選序列元素所根據的型別。

Exception Condition
ArgumentNullException

source 為 null

此方法實現通過使用延遲的執行。 最接近的返回值是指儲存執行的操作所需的所有資訊的物件。 此方法所表示的查詢不執行之前呼叫列舉的物件及其GetEnumerator 方法直接或通過使用 foreach 中 Visual C# 或 For Each 中 Visual Basic。

OfType<TResult>(IEnumerable) 方法只返回這些元素在 source 均可轉換為型別 TResult 若要改為收到的異常,如果元素不能轉換為鍵入TResult, ,使用 Cast<TResult>(IEnumerable)

此方法是可以應用於具有非引數化型別,如集合的幾個標準查詢運算子方法之一 ArrayList 這是因為 OfType<TResult> 擴充套件型別 IEnumerableOfType<TResult> 不能僅應用於所基於的集合引數化 IEnumerable<T> 型別,但基於非引數化的集合 IEnumerable 還需要鍵入。

通過應用 OfType<TResult> 到一個集合,其中實現 IEnumerable, ,您能夠通過使用標準查詢運算子查詢的集合。 例如,如果指定的型別實參Object 到 OfType<TResult> 將返回型別的物件 IEnumerable<Object> 在 C# 或 IEnumerable(Of Object) 中 Visual Basic, ,將要應用的標準查詢運算子。

下面的程式碼示例演示如何使用 OfType<TResult> 來篩選的元素 IEnumerable

System.Collections.ArrayList fruits = new System.Collections.ArrayList(4);
fruits.Add("Mango");
fruits.Add("Orange");
fruits.Add("Apple");
fruits.Add(3.0);
fruits.Add("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.ToLower().Contains("n"));

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

相關文章