Udostępnij za pośrednictwem


Standardowe operatory zapytań — Omówienie

Kwerendy standardowe operatory są metody formularz Zapytanie o języku zintegrowanym (LINQ) wzoru.Większość z tych metod działają w sekwencji, gdzie sekwencji jest obiekt, którego typ implementuje IEnumerable interfejsu lub IQueryable interfejsu.Operatory kwerendy standardowe zapewniają możliwość wykonywania kwerend, włącznie z filtrowaniem projekcji, agregacji, sortowania i więcej.

Istnieją dwa zestawy LINQ kwerendy standardowe operatory, który działa na obiekty typu IEnumerable i inne operuje na obiekty typu IQueryable.Metody, wchodzące w skład każdego zestawu są statyczne członków Enumerable i Queryable klasy, odpowiednio.Są one definiowane jako metody rozszerzenie typu, które działają na.Oznacza to, że może być wywoływana przy użyciu składni metody statycznej lub składni metody instancji.

Ponadto kilka metod operator standardowej kwerendy działają na typy innych niż te, oparte na IEnumerable lub IQueryable.Enumerable Typu definiuje dwie metody takie zarówno eksploatować obiekty typu IEnumerable.Metody te Cast``1(IEnumerable) i OfType``1(IEnumerable), pozwalają włączyć zbiór sparametryzowana lub rodzajowy, której powinna dotyczyć kwerenda w LINQ wzorzec.Są to zrobić, tworząc jednoznacznie określony zbiór obiektów.Queryable Dwóch podobnych metod w klasie Cast``1(IQueryable) i OfType``1(IQueryable), które działają na obiekty typu Queryable.

Operatory kwerendy standardowe różnią się terminy ich wykonania, w zależności od tego, czy zwrócić wartość singleton lub sekwencja wartości.Te metody, które zwracają wartość singleton (na przykład, Average i Sum) wykonaj natychmiast.Metody, które zwracają sekwencji odroczyć wykonanie kwerendy i zwracać obiekt agregującym.

W odniesieniu do metod, które operują na zbiory w pamięci, oznacza to, że te metody, które rozszerzają IEnumerable, zwracany obiekt agregującym przechwytuje argumenty, które zostały przekazane do metody.Gdy obiekt jest wyliczany, logika operator kwerendy jest zatrudniony i są zwracane wyniki kwerendy.

Natomiast metod, rozszerzenie IQueryable nie implementuje wszelkie zachowania podczas badania, ale Buduj drzewo wyrażenie, reprezentującą kwerendy mają być wykonane.Przetwarzanie kwerendy jest obsługiwane przez źródło IQueryable obiektu.

Wywołania metod kwerendy można łączonych w jednej kwerendzie, która umożliwia zapytania do dowolnie skomplikowane.

Poniższy przykład kodu pokazuje, jak operatory kwerendy standardowe może służyć do uzyskiwania informacji na temat sekwencji.

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 

Składni wyrażenia kwerendy

Niektóre częściej używane operatory kwerendy standardowe mają dedykowane C# i Visual Basic składni słów kluczowych języka, umożliwiający ich określany jako część kwerendywyrażenie. Aby uzyskać więcej informacji na temat operatorów standardowej kwerendy, które mają dedykowane słów kluczowych i ich odpowiedniej składni, zobacz Składnia wyrażeń dla standardowych operatorów zapytań.

Rozszerzanie standardowe operatory kwerendy

Można rozszerzać zestaw kwerendy standardowe operatory przez tworzenie metody specyficzne dla domeny, które są właściwe dla domeny docelowej lub technologii.Można także zastąpić operatory kwerendy standardowe własne implementacje, które dostarczają usług dodatkowych, takich jak ocena zdalnego, tłumaczenie kwerendy i optymalizacji.Zobacz AsEnumerable``1 przykład.

Sekcje pokrewne

Poniższe łącza prowadzą do tematów, które zawierają dodatkowe informacje o różnych podmiotów standardowej kwerendy oparte na funkcji.

Sortowanie danych

Operacje na zestawie

Filtrowanie danych

Operacje kwantyfikatora

Operacje rzutowania

Partycjonowanie danych

Operacje połączone

Grupowanie danych

Operacje generowania

Operacje równości

Operacje na elementach

Konwertowanie typów danych

Operacje łączenia

Operacje agregacji

Zobacz też

Informacje

Enumerable

Queryable

Metody rozszerzeń (Przewodnik programowania w języku C#)

Koncepcje

Wprowadzenie do kwerend LINQ (C#)

Składnia wyrażeń dla standardowych operatorów zapytań

Klasyfikacja standardowych operatorów zapytań w oparciu o sposób działania

Metody rozszerzeń (Visual Basic)