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í
Fromklauzulí andSelectnebo explicitně pomocíJoinGroup Joinklauzulí or.K filtrování
Wherevýsledku dotazu použijte klauzuli .Seřadit výsledek pomocí
Order Byklauzule .Seskupte podobné výsledky dohromady pomocí
Group Byklauzule .Pomocí
Aggregateklauzule identifikujte agregační funkce k vyhodnocení celého výsledku dotazu.Pomocí
Letklauzule zavedete iterační proměnnou, jejíž hodnotu určuje výraz místo kolekce.K
Distinctignorování duplicitních výsledků dotazu použijte klauzuli .Identifikujte části výsledku, které se vrátí, pomocí
SkipTakeklauzulíSkip While, , aTake 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é
- Dotazy
- Představení technologie LINQ v jazyce Visual Basic
- For Each...Next – příkaz
- For...Next – příkaz
- Select – klauzule
- Where – klauzule
- Aggregate – klauzule
- Distinct – klauzule
- Join – klauzule
- Group Join – klauzule
- Klauzule Order By
- Let – klauzule
- Skip – klauzule
- Take – klauzule
- Skip While – klauzule
- Take While – klauzule