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.
Zobacz też
Informacje
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