Queryable.Where Metod

Definition

Filtrerar en sekvens med värden baserat på ett predikat.

Överlagringar

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

Filtrerar en sekvens med värden baserat på ett predikat. Varje elements index används i logiken i predikatfunktionen.

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

Filtrerar en sekvens med värden baserat på ett predikat.

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

Filtrerar en sekvens med värden baserat på ett predikat. Varje elements index används i logiken i predikatfunktionen.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IQueryable<TSource>

En IQueryable<T> att filtrera.

predicate
Expression<Func<TSource,Int32,Boolean>>

En funktion för att testa varje element för ett villkor. den andra parametern för funktionen representerar indexet för elementet i källsekvensen.

Returer

IQueryable<TSource>

En IQueryable<T> som innehåller element från indatasekvensen som uppfyller villkoret som anges av predicate.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) för att filtrera en sekvens baserat på ett predikat som innehåller indexet för varje element.

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

Kommentarer

Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.

Metoden Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) genererar en MethodCallExpression som representerar att anropa Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource.MethodCallExpression

Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det returnerar elementen från source som uppfyller villkoret som anges av predicate. Indexet för varje källelement anges som det andra argumentet till predicate.

Gäller för

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

Filtrerar en sekvens med värden baserat på ett predikat.

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)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IQueryable<TSource>

En IQueryable<T> att filtrera.

predicate
Expression<Func<TSource,Boolean>>

En funktion för att testa varje element för ett villkor.

Returer

IQueryable<TSource>

En IQueryable<T> som innehåller element från indatasekvensen som uppfyller villkoret som anges av predicate.

Undantag

source eller predicate är null.

Exempel

Följande kodexempel visar hur du använder Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) för att filtrera en sekvens.

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

Kommentarer

Den här metoden har minst en parameter av typen Expression<TDelegate> vars typargument är en av typerna Func<T,TResult> . För dessa parametrar kan du skicka ett lambda-uttryck och kompileras till en Expression<TDelegate>.

Metoden Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) genererar en MethodCallExpression som representerar att anropa Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) sig själv som en konstruerad generisk metod. Den skickar sedan till CreateQuery(Expression) metoden för den IQueryProvider som representeras av Provider egenskapen för parameternsource.MethodCallExpression

Frågebeteendet som uppstår till följd av att ett uttrycksträd som representerar anrop Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) körs beror på implementeringen av source parametertypen. Det förväntade beteendet är att det returnerar elementen från source som uppfyller villkoret som anges av predicate.

Gäller för