From – klauzule (Visual Basic)

Určuje jednu nebo více proměnných rozsahu a kolekci pro dotazování.

Syntaxe

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

Součástky

Pojem definice
element Povinný: Proměnná rozsahu použitá k iteraci prvky kolekce. Proměnná rozsahu se používá k odkazování na každého člena collection dotazu iteruje přes collection. Musí být výčtový typ.
type Nepovinné. Typ .element Pokud není zadána žádná type hodnota, typ element je odvozen z collection.
collection Povinný: Odkazuje na kolekci, která se má dotazovat. Musí být výčtový typ.

Poznámky

Klauzule From slouží k identifikaci zdrojových dat pro dotaz a proměnných, které slouží k odkazování na prvek ze zdrojové kolekce. Tyto proměnné se nazývají proměnné rozsahu. Klauzule From se vyžaduje pro dotaz, s výjimkou případů, kdy Aggregate se klauzule používá k identifikaci dotazu, který vrací pouze agregované výsledky. Další informace najdete v tématu Agregační klauzule.

V dotazu můžete zadat více From klauzulí, které identifikují více kolekcí, které se mají spojit. Pokud je zadáno více kolekcí, jsou iterated nezávisle, nebo je můžete spojit, pokud jsou související. Kolekce můžete implicitně spojit pomocí Select klauzule nebo explicitně pomocí JoinGroup Join těchto klauzulí. Jako alternativu můžete v jedné From klauzuli zadat více proměnných rozsahu a kolekcí, přičemž každá související proměnná rozsahu a kolekce oddělená od ostatních čárkami. Následující příklad kódu ukazuje obě možnosti syntaxe klauzule From .

' 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

Klauzule From definuje rozsah dotazu, který se podobá oboru For smyčky. element Každá proměnná rozsahu v oboru dotazu proto musí mít jedinečný název. Vzhledem k tomu, že pro dotaz můžete zadat více From klauzulí, můžou následující From klauzule odkazovat na proměnné rozsahu v From klauzuli nebo mohou odkazovat na proměnné rozsahu v předchozí From klauzuli. Následující příklad například ukazuje vnořenou From klauzuli, kde kolekce v druhé klauzuli je založená na vlastnosti proměnné rozsahu v první klauzuli.

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

Za každou From klauzulí může následovat libovolná kombinace dalších klauzulí dotazu, které dotaz upřesní. Dotaz můžete upřesnit následujícími způsoby:

  • Zkombinujte více kolekcí implicitně pomocí From klauzulí a Select klauzulí nebo explicitně pomocí Group JoinJoin těchto klauzulí.

  • Where Pomocí klauzule můžete filtrovat výsledek dotazu.

  • Seřaďte výsledek pomocí Order By klauzule.

  • Seskupte podobné výsledky pomocí Group By klauzule.

  • Klauzule Aggregate slouží k identifikaci agregačních funkcí k vyhodnocení celého výsledku dotazu.

  • Klauzule Let slouží k zavedení proměnné iterace, jejíž hodnota je určena výrazem místo kolekce.

  • Distinct Pomocí klauzule můžete ignorovat duplicitní výsledky dotazu.

  • Identifikujte části výsledku, které se mají vrátit, pomocí Skipklauzulí , TakeSkip While, a Take While klauzulí.

Příklad

Následující výraz dotazu používá From klauzuli k deklaraci proměnné cust rozsahu pro každý Customer objekt v kolekci customers . Klauzule Where používá proměnnou rozsahu k omezení výstupu pro zákazníky ze zadané oblasti. Smyčka For Each zobrazí název společnosti pro každého zákazníka ve výsledku dotazu.

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

Viz také