Where Clause (Visual Basic)
Egy lekérdezés szűrési feltételét adja meg.
Syntax
Where condition
Részek
condition
Szükséges. Egy kifejezés, amely meghatározza, hogy a gyűjtemény aktuális elemének értékei szerepelnek-e a kimeneti gyűjteményben. A kifejezésnek egy értéknek Boolean
vagy egy értéknek megfelelőnek Boolean
kell lennie. Ha a feltétel kiértékelése így True
történik, az elem szerepel a lekérdezés eredményében, ellenkező esetben az elem ki van zárva a lekérdezés eredményéből.
Megjegyzések
A Where
záradék lehetővé teszi a lekérdezési adatok szűrését úgy, hogy csak bizonyos feltételeknek megfelelő elemeket választ ki. Azok az elemek, amelyek értékei a Where
záradék kiértékelését True
okozzák, szerepelnek a lekérdezés eredményében; a többi elem ki van zárva. A záradékban Where
használt kifejezésnek egy vagy azzal egyenértékűnek Boolean
kell lennieBoolean
, például egy egész számnakFalse
, amely akkor értékeli ki, ha értéke nulla. Egy záradékban Where
több kifejezést is kombinálhat olyan logikai operátorok használatával, mint And
a , Or
, AndAlso
, OrElse
, Is
és IsNot
.
Alapértelmezés szerint a lekérdezési kifejezések nem lesznek kiértékelve, amíg el nem érik őket – például amikor adathoz kötöttek vagy egy cikluson For
keresztül iteratedálják őket. Ennek eredményeképpen a Where
záradék csak a lekérdezés eléréséig lesz kiértékelve. Ha a záradékban Where
használt lekérdezésen kívüli értékekkel rendelkezik, győződjön meg arról, hogy a megfelelő értéket használja a Where
záradék a lekérdezés végrehajtásakor. A lekérdezések végrehajtásával kapcsolatos további információkért lásd : Az első LINQ-lekérdezés írása.
A záradékon belüli Where
függvényeket meghívva számítást vagy műveletet hajthat végre a gyűjtemény aktuális eleméből származó értéken. Ha egy függvényt meghív egy Where
záradékban, akkor a lekérdezés azonnal végrehajtható lesz, amikor a lekérdezést definiálják, és nem azt, hogy mikor érik el. A lekérdezések végrehajtásával kapcsolatos további információkért lásd : Az első LINQ-lekérdezés írása.
1. példa
Az alábbi lekérdezési kifejezés egy záradékkal From
deklarál egy tartományváltozót cust
a customers
gyűjtemény minden Customer
objektumához. A Where
záradék a tartományváltozó használatával korlátozza a kimenetet a megadott régióból származó ügyfelek számára. A For Each
hurok megjeleníti az egyes ügyfelek cégnevét a lekérdezés eredményében.
Sub DisplayCustomersForRegion(ByVal customers As List(Of Customer),
ByVal region As String)
Dim customersForRegion = From cust In customers
Where cust.Region = region
For Each cust In customersForRegion
Console.WriteLine(cust.CompanyName)
Next
End Sub
2. példa
Az alábbi példa a záradékban Where
használt és Or
logikai operátorokat használjaAnd
.
Private Sub DisplayElements()
Dim elements As List(Of Element) = BuildList()
' Get a list of elements that have an atomic number from 12 to 14,
' or that have a name that ends in "r".
Dim subset = From theElement In elements
Where (theElement.AtomicNumber >= 12 And theElement.AtomicNumber < 15) _
Or theElement.Name.EndsWith("r")
Order By theElement.Name
For Each theElement In subset
Console.WriteLine(theElement.Name & " " & theElement.AtomicNumber)
Next
' Output:
' Aluminum 13
' Magnesium 12
' Silicon 14
' Sulfur 16
End Sub
Private Function BuildList() As List(Of Element)
Return New List(Of Element) From
{
{New Element With {.Name = "Sodium", .AtomicNumber = 11}},
{New Element With {.Name = "Magnesium", .AtomicNumber = 12}},
{New Element With {.Name = "Aluminum", .AtomicNumber = 13}},
{New Element With {.Name = "Silicon", .AtomicNumber = 14}},
{New Element With {.Name = "Phosphorous", .AtomicNumber = 15}},
{New Element With {.Name = "Sulfur", .AtomicNumber = 16}}
}
End Function
Public Class Element
Public Property Name As String
Public Property AtomicNumber As Integer
End Class