Queryable.Where Metode

Definisi

Memfilter urutan nilai berdasarkan predikat.

Overload

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

Memfilter urutan nilai berdasarkan predikat.

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

Memfilter urutan nilai berdasarkan predikat. Indeks setiap elemen digunakan dalam logika fungsi predikat.

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

Sumber:
Queryable.cs
Sumber:
Queryable.cs
Sumber:
Queryable.cs

Memfilter urutan nilai berdasarkan 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)

Jenis parameter

TSource

Jenis elemen source.

Parameter

source
IQueryable<TSource>

Untuk IQueryable<T> memfilter.

predicate
Expression<Func<TSource,Boolean>>

Fungsi untuk menguji setiap elemen untuk suatu kondisi.

Mengembalikan

IQueryable<TSource>

Yang IQueryable<T> berisi elemen dari urutan input yang memenuhi kondisi yang ditentukan oleh predicate.

Pengecualian

source atau predicate adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) untuk memfilter urutan.

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

Keterangan

Metode ini memiliki setidaknya satu parameter jenis Expression<TDelegate> yang argumen jenisnya adalah salah satu jenisnya Func<T,TResult> . Untuk parameter ini, Anda dapat meneruskan ekspresi lambda dan akan dikompilasi ke Expression<TDelegate>.

Metode ini Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) menghasilkan MethodCallExpression yang mewakili pemanggilan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke CreateQuery(Expression) metode dari yang IQueryProvider diwakili oleh Provider properti source parameter .

Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Boolean>>) tergantung pada implementasi jenis source parameter. Perilaku yang diharapkan adalah bahwa ia mengembalikan elemen dari source yang memenuhi kondisi yang ditentukan oleh predicate.

Berlaku untuk

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

Sumber:
Queryable.cs
Sumber:
Queryable.cs
Sumber:
Queryable.cs

Memfilter urutan nilai berdasarkan predikat. Indeks setiap elemen digunakan dalam logika fungsi 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, 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)

Jenis parameter

TSource

Jenis elemen source.

Parameter

source
IQueryable<TSource>

Untuk IQueryable<T> memfilter.

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

Fungsi untuk menguji setiap elemen untuk suatu kondisi; parameter kedua fungsi mewakili indeks elemen dalam urutan sumber.

Mengembalikan

IQueryable<TSource>

Yang IQueryable<T> berisi elemen dari urutan input yang memenuhi kondisi yang ditentukan oleh predicate.

Pengecualian

source atau predicate adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) untuk memfilter urutan berdasarkan predikat yang menggabungkan indeks setiap elemen.

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

Keterangan

Metode ini memiliki setidaknya satu parameter jenis Expression<TDelegate> yang argumen jenisnya adalah salah satu jenisnya Func<T,TResult> . Untuk parameter ini, Anda dapat meneruskan ekspresi lambda dan akan dikompilasi ke Expression<TDelegate>.

Metode ini Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) menghasilkan MethodCallExpression yang mewakili pemanggilan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) dirinya sebagai metode generik yang dibangun. Kemudian meneruskan MethodCallExpression ke CreateQuery(Expression) metode dari yang IQueryProvider diwakili oleh Provider properti source parameter .

Perilaku kueri yang terjadi sebagai akibat dari menjalankan pohon ekspresi yang mewakili panggilan Where<TSource>(IQueryable<TSource>, Expression<Func<TSource,Int32,Boolean>>) tergantung pada implementasi jenis source parameter. Perilaku yang diharapkan adalah bahwa ia mengembalikan elemen dari source yang memenuhi kondisi yang ditentukan oleh predicate. Indeks setiap elemen sumber disediakan sebagai argumen kedua untuk predicate.

Berlaku untuk