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

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 predicatewird. Der Index jedes Quellelements wird als zweites Argument bereitgestellt.predicate

Gilt für