Megosztás a következőn keresztül:


From Clause (Visual Basic)

Egy vagy több tartományváltozót és egy lekérdezésre szolgáló gyűjteményt határoz meg.

Syntax

From element [ As type ] In collection [ _ ]  
  [, element2 [ As type2 ] In collection2 [, ... ] ]  

Részek

Időszak Definíció
element Szükséges. A gyűjtemény elemein keresztüli iteráláshoz használt tartományváltozó . A tartományváltozó a lekérdezés minden tagjára collection hivatkozik, mivel a lekérdezés a collection. Számba vehető típusnak kell lennie.
type Opcionális. A típus.element Ha nincs type megadva, a függvény a következőből elementcollectionkövetkeztet: .
collection Szükséges. A lekérdezendő gyűjteményre hivatkozik. Számba vehető típusnak kell lennie.

Megjegyzések

A From záradék a lekérdezés forrásadatainak és a forrásgyűjtemény egy elemére való hivatkozáshoz használt változók azonosítására szolgál. Ezeket a változókat tartományváltozóknak nevezzük. A From záradék egy lekérdezéshez szükséges, kivéve, ha a Aggregate záradék egy olyan lekérdezés azonosítására szolgál, amely csak összesített eredményeket ad vissza. További információ: Összesítési záradék.

Egy lekérdezésben több From záradékot is megadhat, így több összekapcsolandó gyűjteményt is azonosíthat. Ha több gyűjtemény van megadva, azok egymástól függetlenül lesznek iterálva, vagy összekapcsolhatja őket, ha kapcsolódnak hozzájuk. A gyűjteményeket implicit módon is összekapcsolhatja a Select záradék használatával, vagy explicit módon a Join záradékok vagy Group Join záradékok használatával. Alternatív megoldásként több tartományváltozót és gyűjteményt is megadhat egyetlen From záradékban, az egyes kapcsolódó tartományváltozók és gyűjtemények vesszővel elválasztva a többitől. Az alábbi példakód a záradék mindkét szintaxisbeállítását From mutatja be.

' Multiple From clauses in a query.
Dim result = From var1 In collection1, var2 In collection2

' Equivalent syntax with a single From clause.
Dim result2 = From var1 In collection1
              From var2 In collection2

A From záradék egy lekérdezés hatókörét határozza meg, amely hasonló a ciklus hatóköréhez For . Ezért a lekérdezés hatókörének minden element tartományváltozójának egyedi névvel kell rendelkeznie. Mivel egy lekérdezéshez több From záradékot is megadhat, a későbbi From záradékok hivatkozhatnak a From záradék tartományváltozóira, vagy hivatkozhatnak az előző From záradék tartományváltozóira. Az alábbi példa például egy beágyazott From záradékot mutat be, amelyben a második záradékban lévő gyűjtemény az első záradék tartományváltozójának tulajdonságán alapul.

Dim allOrders = From cust In GetCustomerList()
                From ord In cust.Orders
                Select ord

Minden From záradékot a lekérdezés finomításához további lekérdezési záradékok bármilyen kombinációja követhet. A lekérdezést a következő módokon pontosíthatja:

  • Több gyűjteményt implicit módon kombinálhat a záradékok és Select a From záradékok használatával, vagy explicit módon a vagy Group Join záradékok Join használatával.

  • Where A záradék használatával szűrheti a lekérdezés eredményét.

  • Rendezze az eredményt a Order By záradék használatával.

  • Csoportosítsa a hasonló eredményeket a Group By záradék használatával.

  • A záradék segítségével azonosíthatja az Aggregate összesítő függvényeket a teljes lekérdezés eredményének kiértékeléséhez.

  • Let A záradék használatával olyan iterációs változót vezet be, amelynek értékét gyűjtemény helyett kifejezés határozza meg.

  • Distinct A záradék használatával figyelmen kívül hagyhatja az ismétlődő lekérdezési eredményeket.

  • Azonosítsa az eredmény azon részeit, amelyeket vissza szeretne adni a Skip, Take, Skip Whileés Take While záradékok használatával.

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

Lásd még