Sdílet prostřednictvím


Přehled standardních operátorů dotazu

Operátory standardní dotaz jsou metody formulář LINQ (Language-Integrated Query) vzorku.Většina těchto metod sekvencí, kde je sekvence objekt, jehož typ implementuje pracují IEnumerable rozhraní nebo IQueryable rozhraní.Standardní dotaz operátoři poskytovat včetně filtrování projekce, agregace, řazení a další možnosti.

Existují dvě sady LINQ operátory standardní dotaz, který pracuje s objekty typu IEnumerable a další, který pracuje s objekty typu IQueryable.Metody, které tvoří každou sadu jsou statické členy Enumerable a Queryable resp. tříd.Jsou definovány jako rozšíření metody typu, které pracují na.To znamená, že lze volat pomocí syntaxe statická metoda nebo metoda syntaxe instance.

Několik metod standardního dotazu operátor pracují jiných typů než ty, které na základě IEnumerable nebo IQueryable.Enumerable Typ definuje dvě metody oba pracují objekty typu IEnumerable.Tyto metody Cast``1(IEnumerable) a OfType``1(IEnumerable), umožněte povolit-Parametrizovaná nebo obecné, kolekce v dotazu LINQ vzorku.Je to vytvořením silnými kolekci objektů.Queryable Třída definuje dvě podobné metody Cast``1(IQueryable) a OfType``1(IQueryable), které jsou provozovány na objekty typu Queryable.

Standardní dotaz operátory se liší načasování jejich provádění, a to v závislosti na tom, zda vrátit hodnotu singleton nebo posloupnost hodnot.Tyto metody, které vracejí hodnotu singleton (například Average a Sum) spustit okamžitě.Metody, které vracejí posloupnost odložit spuštění dotazu a vrátí objekt agregující.

U metod, které pracují v paměti kolekcí, tyto metody, které rozšiřují IEnumerable, vrácený objekt agregující zachycuje argumenty, které byly předány metody.Při výčtu objektu je zaměstnán logiku operátor dotazu a výsledky dotazu jsou vráceny.

Naopak, jsou metody, rozšířit IQueryable jakékoli dotazování chování neimplementuje, ale sestavení stromu výraz, představuje dotaz má být provedena.Zpracování dotazu jsou zpracována zdroj IQueryable objektu.

Volání metody dotazu můžete zřetězeno dohromady v jednom dotazu, který umožňuje stát se libovolně složité dotazy.

Následující příklad kódu ukazuje, jak standardní dotaz operátory lze získat informace o sekvenci.

Dim sentence = "the quick brown fox jumps over the lazy dog" 
        ' Split the string into individual words to create a collection. 
        Dim words = sentence.Split(" "c)

        Dim query = From word In words 
                    Group word.ToUpper() By word.Length Into gr = Group 
                    Order By Length _
                    Select Length, GroupedWords = gr

        Dim output As New System.Text.StringBuilder
        For Each obj In query
            output.AppendLine(String.Format("Words of length {0}:", obj.Length))
            For Each word As String In obj.GroupedWords
                output.AppendLine(word)
            Next 
        Next 

        'Display the output
        MsgBox(output.ToString())

        ' This code example produces the following output: 
        ' 
        ' Words of length 3: 
        ' THE 
        ' FOX 
        ' THE 
        ' DOG 
        ' Words of length 4: 
        ' OVER 
        ' LAZY 
        ' Words of length 5: 
        ' QUICK 
        ' BROWN 
        ' JUMPS 
string sentence = "the quick brown fox jumps over the lazy dog";
           // Split the string into individual words to create a collection. 
           string[] words = sentence.Split(' ');

           // Using query expression syntax. 
           var query = from word in words
                       group word.ToUpper() by word.Length into gr
                       orderby gr.Key
                       select new { Length = gr.Key, Words = gr };

           // Using method-based query syntax. 
           var query2 = words.
               GroupBy(w => w.Length, w => w.ToUpper()).
               Select(g => new { Length = g.Key, Words = g }).
               OrderBy(o => o.Length);

           foreach (var obj in query)
           {
               Console.WriteLine("Words of length {0}:", obj.Length);
               foreach (string word in obj.Words)
                   Console.WriteLine(word);
           }

           // This code example produces the following output: 
           // 
           // Words of length 3: 
           // THE 
           // FOX 
           // THE 
           // DOG 
           // Words of length 4: 
           // OVER 
           // LAZY 
           // Words of length 5: 
           // QUICK 
           // BROWN 
           // JUMPS 

Syntaxe dotazu výraz

Některé často používané standardní dotaz operátory mají vyhrazený C# a Visual Basic klíčové slovo syntaxe jazyka, které umožňují volat jako část dotazuvýraz. Další informace o standardní dotaz operátory, které mají vyhrazená klíčová slova a jejich odpovídající syntaxe, viz Syntaxe výrazu dotazu pro standardní operátory dotazu.

Rozšíření standardní operátory dotazu

Nastavení standardního dotazu operátorů můžete rozšiřovat vytváření specifické domény metodami, které jsou vhodné pro cílové domény nebo technologie.Operátory standardního dotazu můžete také nahradit vlastní implementace, které poskytují další služby jako vzdálené hodnocení, překlad dotazu a optimalizace.Příklad naleznete v tématu AsEnumerable``1.

Související oddíly

Následující odkazy trvat na témata, které poskytují další informace o jednotlivých provozovatelů standardní dotaz založený na funkce.

Řazení dat

Množinové operace

Filtrování dat

Operace kvantifikátoru

Operace projekce

Segmentace dat

Operace sjednocení

Seskupování dat

Generování operací

Operace rovnosti

Operace s elementy

Převádění datových typů

Operace sřetězení

Agregační operace

Viz také

Referenční dokumentace

Enumerable

Queryable

Metody rozšíření (Průvodce programováním v C#)

Koncepty

Úvod do dotazů LINQ (C#)

Syntaxe výrazu dotazu pro standardní operátory dotazu

Klasifikace standardních operátorů dotazu podle metody provedení

Metody rozšíření (Visual Basic)