Enumerable.Where 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
根據述詞來篩選值序列。
多載
Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
根據述詞來篩選值序列。 |
Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) |
根據述詞來篩選值序列。 述詞函式的邏輯中使用各項目的索引。 |
Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
- 來源:
- Where.cs
- 來源:
- Where.cs
- 來源:
- Where.cs
根據述詞來篩選值序列。
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TSource> ^ Where(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member Where : seq<'Source> * Func<'Source, bool> -> seq<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As IEnumerable(Of TSource)
類型參數
- TSource
source
項目的類型。
參數
- source
- IEnumerable<TSource>
要篩選的 IEnumerable<T>。
傳回
IEnumerable<T>,其中包含輸入序列中符合條件的項目。
例外狀況
source
或 predicate
為 null
。
範例
下列程式代碼範例示範如何使用 Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) 來篩選序列。
List<string> fruits =
new List<string> { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" };
IEnumerable<string> query = fruits.Where(fruit => fruit.Length < 6);
foreach (string fruit in query)
{
Console.WriteLine(fruit);
}
/*
This code produces the following output:
apple
mango
grape
*/
' Create a list of strings.
Dim fruits As New List(Of String)(New String() _
{"apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry"})
' Restrict the results to those strings whose
' length is less than six.
Dim query As IEnumerable(Of String) =
fruits.Where(Function(fruit) fruit.Length < 6)
' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' apple
' mango
' grape
備註
這個方法是使用延後執行來實作。 立即傳回值是一個物件,會儲存執行動作所需的所有資訊。 除非直接呼叫其 GetEnumerator
方法或在 C# 或 foreach
For Each
Visual Basic 中使用 來列舉對象,否則不會執行這個方法所代表的查詢。
在查詢表達式語法中, where
(C#) 或 Where
(Visual Basic) 子句會轉譯為 的 Where<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)調用。
另請參閱
適用於
Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)
- 來源:
- Where.cs
- 來源:
- Where.cs
- 來源:
- Where.cs
根據述詞來篩選值序列。 述詞函式的邏輯中使用各項目的索引。
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Collections::Generic::IEnumerable<TSource> ^ Where(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, int, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> Where<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);
static member Where : seq<'Source> * Func<'Source, int, bool> -> seq<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Integer, Boolean)) As IEnumerable(Of TSource)
類型參數
- TSource
source
項目的類型。
參數
- source
- IEnumerable<TSource>
要篩選的 IEnumerable<T>。
傳回
IEnumerable<T>,其中包含輸入序列中符合條件的項目。
例外狀況
source
或 predicate
為 null
。
範例
下列程式代碼範例示範如何使用 Where<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) 根據涉及每個元素索引的述詞來篩選序列。
int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };
IEnumerable<int> query =
numbers.Where((number, index) => number <= index * 10);
foreach (int number in query)
{
Console.WriteLine(number);
}
/*
This code produces the following output:
0
20
15
40
*/
' Create an array of integers.
Dim numbers() As Integer = {0, 30, 20, 15, 90, 85, 40, 75}
' Restrict the results to those numbers whose
' values are less than or equal to their index times 10.
Dim query As IEnumerable(Of Integer) =
numbers.Where(Function(number, index) number <= index * 10)
' Display the results.
Dim output As New System.Text.StringBuilder
For Each number As Integer In query
output.AppendLine(number)
Next
Console.WriteLine(output.ToString())
' This code produces the following output:
'
' 0
' 20
' 15
' 40
備註
這個方法是使用延後執行來實作。 立即傳回值是一個物件,會儲存執行動作所需的所有資訊。 除非直接呼叫其 GetEnumerator
方法或在 C# 或 foreach
For Each
Visual Basic 中使用 來列舉對象,否則不會執行這個方法所代表的查詢。
的第一個自變數 predicate
代表要測試的專案。 第二個自變數代表 內 source
專案之以零起始的索引。