Queryable.Where Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Filtert eine Sequenz von Werten basierend auf einem Prädikat.
Überlädt
Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) |
Filtert eine Sequenz von Werten basierend auf einem Prädikat. |
Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) |
Filtert eine Sequenz von Werten basierend auf einem Prädikat. In der Logik der Prädikatfunktion wird der Index der einzelnen Elemente verwendet. |
Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>)
Filtert eine Sequenz von Werten basierend auf einem Prädikat.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ Where(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, bool> ^> ^ predicate);
public static System.Linq.IQueryable<TSource> Where<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);
static member Where : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, bool>> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Boolean))) As IQueryable(Of TSource)
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Ein zu filterndes IQueryable<T>
- predicate
- Expression<Func<TSource,Boolean>>
Eine Funktion, mit der jedes Element auf eine Bedingung überprüft wird.
Gibt zurück
- IQueryable<TSource>
Ein IQueryable<T> mit Elementen aus der Eingabesequenz, die die von predicate
angegebene Bedingung erfüllen.
Ausnahmen
source
oder predicate
ist null
.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie eine Sequenz gefiltert werden Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) soll.
List<string> fruits =
new List<string> { "apple", "passionfruit", "banana", "mango",
"orange", "blueberry", "grape", "strawberry" };
// Get all strings whose length is less than 6.
IEnumerable<string> query =
fruits.AsQueryable().Where(fruit => fruit.Length < 6);
foreach (string fruit in query)
Console.WriteLine(fruit);
/*
This code produces the following output:
apple
mango
grape
*/
Dim fruits As New List(Of String)(New String() _
{"apple", "passionfruit", "banana", "mango", _
"orange", "blueberry", "grape", "strawberry"})
' Get all strings whose length is less than 6.
Dim query = fruits.AsQueryable().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
MsgBox(output.ToString())
' This code produces the following output:
' apple
' mango
' grape
Hinweise
Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.
Die Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) Methode generiert eine MethodCallExpression , die das Aufrufen Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery(Expression) Provider Eigenschaft des source
Parameters übergeben.
Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) des source
Parameters ab. Das erwartete Verhalten besteht darin, dass die Elemente source
zurückgegeben werden, aus denen die bedingung erfüllt wird, die von predicate
.
Gilt für
Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>)
Filtert eine Sequenz von Werten basierend auf einem Prädikat. In der Logik der Prädikatfunktion wird der Index der einzelnen Elemente verwendet.
public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
static System::Linq::IQueryable<TSource> ^ Where(System::Linq::IQueryable<TSource> ^ source, System::Linq::Expressions::Expression<Func<TSource, int, bool> ^> ^ predicate);
public static System.Linq.IQueryable<TSource> Where<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,bool>> predicate);
static member Where : System.Linq.IQueryable<'Source> * System.Linq.Expressions.Expression<Func<'Source, int, bool>> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Where(Of TSource) (source As IQueryable(Of TSource), predicate As Expression(Of Func(Of TSource, Integer, Boolean))) As IQueryable(Of TSource)
Typparameter
- TSource
Der Typ der Elemente von source
.
Parameter
- source
- IQueryable<TSource>
Ein zu filterndes IQueryable<T>
- predicate
- Expression<Func<TSource,Int32,Boolean>>
Eine Funktion zum Überprüfen jedes Elements auf eine Bedingung. Der zweite Parameter der Funktion stellt den Index des Elements in der Quellsequenz dar.
Gibt zurück
- IQueryable<TSource>
Ein IQueryable<T> mit Elementen aus der Eingabesequenz, die die von predicate
angegebene Bedingung erfüllen.
Ausnahmen
source
oder predicate
ist null
.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie Sie Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) eine Sequenz basierend auf einem Prädikat filtern, das den Index jedes Elements enthält.
int[] numbers = { 0, 30, 20, 15, 90, 85, 40, 75 };
// Get all the numbers that are less than or equal to
// the product of their index in the array and 10.
IEnumerable<int> query =
numbers.AsQueryable()
.Where((number, index) => number <= index * 10);
foreach (int number in query)
Console.WriteLine(number);
/*
This code produces the following output:
0
20
15
40
*/
Dim numbers() As Integer = {0, 30, 20, 15, 90, 85, 40, 75}
' Get all the numbers that are less than or equal to
' the product of their index in the array and 10.
Dim query = numbers.AsQueryable() _
.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
MsgBox(output.ToString())
' This code produces the following output:
' 0
' 20
' 15
' 40
Hinweise
Diese Methode verfügt über mindestens einen Parameter vom Typ, dessen Typargument Expression<TDelegate> eine der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben und an einen Expression<TDelegate>.
Die Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) Methode generiert eine MethodCallExpression , die das Aufrufen Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery(Expression) Provider Eigenschaft des source
Parameters übergeben.
Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) des source
Parameters ab. Das erwartete Verhalten besteht darin, dass sie die Elemente source
zurückgibt, aus denen die angegebene Bedingung erfüllt predicate
wird. Der Index jedes Quellelements wird als zweites Argument bereitgestellt.predicate