Auf Englisch lesen

Teilen über


Queryable.Where Methode

Definition

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>>)

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Filtert eine Sequenz von Werten basierend auf einem Prädikat.

C#
public static System.Linq.IQueryable<TSource> Where<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,bool>> predicate);

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 sie zum Filtern einer Sequenz verwenden Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) .

C#
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
*/

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben, der zu einem Expression<TDelegate>kompiliert wird.

Die Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) -Methode generiert eine MethodCallExpression , die den Aufruf Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird an MethodCallExpression die CreateQuery(Expression) -Methode des übergeben, das IQueryProvider durch die Provider -Eigenschaft des source -Parameters dargestellt wird.

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) darstellt, hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass die Elemente aus source zurückgegeben werden, die die von predicateangegebene Bedingung erfüllen.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>)

Quelle:
Queryable.cs
Quelle:
Queryable.cs
Quelle:
Queryable.cs

Filtert eine Sequenz von Werten basierend auf einem Prädikat. In der Logik der Prädikatfunktion wird der Index der einzelnen Elemente verwendet.

C#
public static System.Linq.IQueryable<TSource> Where<TSource> (this System.Linq.IQueryable<TSource> source, System.Linq.Expressions.Expression<Func<TSource,int,bool>> predicate);

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 verwenden Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) , um eine Sequenz basierend auf einem Prädikat zu filtern, das den Index jedes Elements enthält.

C#
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
*/

Hinweise

Diese Methode verfügt über mindestens einen Parameter vom Typ Expression<TDelegate> , dessen Typargument einer der Func<T,TResult> Typen ist. Für diese Parameter können Sie einen Lambdaausdruck übergeben, der zu einem Expression<TDelegate>kompiliert wird.

Die Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) -Methode generiert eine MethodCallExpression , die den Aufruf Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) selbst als konstruierte generische Methode darstellt. Anschließend wird an MethodCallExpression die CreateQuery(Expression) -Methode des übergeben, das IQueryProvider durch die Provider -Eigenschaft des source -Parameters dargestellt wird.

Das Abfrageverhalten, das als Ergebnis der Ausführung einer Ausdrucksstruktur auftritt, die den Aufruf Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) darstellt, hängt von der Implementierung des Typs des source Parameters ab. Das erwartete Verhalten besteht darin, dass die Elemente aus source zurückgegeben werden, die die von predicateangegebene Bedingung erfüllen. Der Index jedes Quellelements wird als zweites Argument für predicatebereitgestellt.

Gilt für:

.NET 9 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0