Udostępnij za pośrednictwem


Omówienie operatory kwerendy standardowe

Kwerendy standardowe operatory są metody formularz Language-Integrated Query (LINQ) wzoru.Większość z tych metod działają w sekwencji, gdzie sekwencji jest obiekt, którego typ implementuje IEnumerable<T> interfejsu lub IQueryable<T> 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<T> i inne operuje na obiekty typu IQueryable<T>.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<T> lub IQueryable<T>.Enumerable Typu definiuje dwie metody takie zarówno eksploatować obiekty typu IEnumerable.Metody te Cast<TResult>(IEnumerable) i OfType<TResult>(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<TResult>(IQueryable) i OfType<TResult>(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<T>, 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<T> 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<T> 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żenie kwerendy standardowe operatory kwerendy.

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<TSource> 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

Ustaw operacje

Filtrowanie danych

Kwantyfikator operacji

Rzut operacji

Partycjonowanie danych

Operacje JOIN

Grupowanie danych

Generowanie operacji

Operacje równości

Element operacji

Konwersja typów danych

Operacje łączenia

Operacje agregacji

Zobacz też

Informacje

Enumerable

Queryable

Rozszerzenie metody (Podręcznik programowania C#)

Koncepcje

Wprowadzenie do zapytań LINQ (C#)

Składnia wyrażenie kwerendy standardowe operatory kwerendy

Klasyfikacja standardowe operatory kwerendy przez sposób wykonania

Rozszerzenie metody (Visual Basic)