Typ relace v LINQ operací dotazu (C#)
Efektivní psaní dotazů je třeba porozumět, jak souvisí s typy proměnných v operaci dokončení dotazu všechny navzájem.Pokud rozumíte tyto vztahy vám budou snáze pochopit LINQ ukázky a příklady kódu v dokumentaci.Kromě toho bude pochopit, co se děje na pozadí zadávaný proměnné jsou implicitně pomocí var.
LINQoperace dotazu jsou silný zdroj dat, samotný dotaz a spuštění dotazu.Typ proměnné v dotazu musí být kompatibilní s typem prvků ve zdroji dat a typ iterační proměnná v foreach prohlášení.Silné zadáním zaručuje, že jsou chyby typu ulovených v době kompilace při jejich mohou být opraveny před uživatelé setkat, je.
K prokázání tyto vztahy typu, většina následující příklady použít explicitní zadáním všech proměnných.Poslední příklad ukazuje, jak stejné zásady platí, i když použijete implicitní psát pomocí var.
Dotazy, které není transformace zdroj dat.
Následující obrázek ukazuje LINQ objekty dotaz operaci, která provádí žádná transformace dat.Zdroj obsahuje řadu řetězců a výstup dotazu je také sekvence řetězce.
V argumentu typ zdroje dat určuje typ rozsahu proměnné.
Typ vybraného objektu určuje typ proměnné dotazu.Zde name je řetězec.Proměnná dotazu tedy IEnumerable<string>.
Musí proměnná dotazu je vstupní přes foreach prohlášení.Protože proměnná dotazu je posloupnost řetězce, iterační proměnná je také řetězec.
Dotazy, které transformace zdroj dat.
Následující obrázek ukazuje Technologie LINQ to SQL operaci, která provádí jednoduché transformace dat dotazu.Dotaz trvá sekvence Customer objekty jako vstup a vybere pouze Name vlastnost ve výsledku.Protože Name je řetězec, vytvoří dotaz na sekvence řetězce jako výstup.
V argumentu typ zdroje dat určuje typ rozsahu proměnné.
select Příkaz vrátí Name vlastností namísto úplnou Customer objektu.Protože Name je řetězec v argumentu typ custNameQuery je string, není Customer.
Protože custNameQuery je posloupnost řetězce, foreach musí být také iterační proměnná smyčky string.
Následující obrázek ukazuje poněkud složitější transformace.select Příkaz vrátí pouze dva členové původní shromažďuje anonymní typ Customer objektu.
V argumentu typ zdroje dat je vždy typ proměnné rozsah v dotazu.
Protože select prohlášení vytváří anonymní typ, proměnná dotazu musí být zadány implicitně pomocí var.
Protože je implicitní typ proměnné dotazu iterační proměnná v foreach smyčky musí být implicitní.
Takže kompilátor odvodit informace o typu
Přestože měli byste pochopit vztahy typ operace dotazu, máte možnost nechat kompilátoru můžete provést všechny práce.Klíčové slovo var lze použít pro všechny místní proměnné v operace dotazu.Na následujícím obrázku je příklad číslo 2 dříve zmíněných přesně ekvivalentní.Jediným rozdílem je, že kompilátor dodá silný typ pro každou proměnnou operací dotazu:
Pro více informací o var si prohlédněte Implicitně zadali místní proměnné (C# programování Guide).
Viz také
Koncepty
Typ relace v operací dotazu (Visual Basic)