From – klauzule (Visual Basic)

Určuje jednu nebo více proměnných rozsahu a kolekci, která se má dotazovat.

Syntax

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

Součásti

Pojem Definice
element Povinná hodnota. Proměnná rozsahu použitá k iteraci prvků kolekce. Proměnná rozsahu se používá k odkazování na jednotlivé členy collection , když dotaz prochází collection . Musí to být vyčíslitelný typ.
type Nepovinný parametr. Typ element . Pokud není type zadaný žádný, typ element je odvozen z collection .
collection Povinná hodnota. Odkazuje na kolekci, která se má dotazovat. Musí to být vyčíslitelný typ.

Poznámky

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

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

' 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 obor dotazu, který se podobá oboru For smyčky. Proto každá proměnná rozsahu v oboru dotazu musí element mít jedinečný název. Vzhledem k tomu, že pro dotaz můžete zadat více klauzulí, mohou následující klauzule odkazovat na proměnné rozsahu v klauzuli nebo mohou odkazovat na proměnné rozsahu v From From předchozí From From klauzuli. Například následující příklad ukazuje vnořenou klauzuli , kde kolekce v druhé klauzuli je založena na vlastnosti proměnné From rozsahu v první klauzuli.

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

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

  • Kombinovat více kolekcí implicitně pomocí From klauzulí and Select nebo explicitně pomocí Join Group Join klauzulí or.

  • K filtrování Where výsledku dotazu použijte klauzuli .

  • Seřadit výsledek pomocí Order By klauzule .

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

  • Pomocí Aggregate klauzule identifikujte agregační funkce k vyhodnocení celého výsledku dotazu.

  • Pomocí Let klauzule zavedete iterační proměnnou, jejíž hodnotu určuje výraz místo kolekce.

  • K Distinct ignorování duplicitních výsledků dotazu použijte klauzuli .

  • Identifikujte části výsledku, které se vrátí, pomocí Skip Take klauzulí Skip While , , a Take While .

Příklad

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

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é