Dela via


Översikt över vanliga frågeoperatorer (Visual Basic)

Vanliga frågeoperatorer är de metoder som utgör LINQ-mönstret. De flesta av dessa metoder fungerar på sekvenser, där en sekvens är ett objekt vars typ implementerar IEnumerable<T> gränssnittet eller IQueryable<T> gränssnittet. Vanliga frågeoperatorer tillhandahåller frågefunktioner som filtrering, projektion, aggregering, sortering med mera.

Det finns två uppsättningar linq-standard frågeoperatorer, en som fungerar på objekt av typen IEnumerable<T> och den andra som fungerar på objekt av typen IQueryable<T>. Metoderna som utgör varje uppsättning är statiska medlemmar i Enumerable klasserna respektive Queryable . De definieras som tilläggsmetoder av den typ som de arbetar med. Det innebär att de kan anropas med antingen statisk metodsyntax eller instansmetodsyntax.

Dessutom fungerar flera standardmetoder för frågeoperatorer på andra typer än de som baseras på IEnumerable<T> eller IQueryable<T>. Typen Enumerable definierar två sådana metoder som båda fungerar på objekt av typen IEnumerable. Med dessa metoder och Cast<TResult>(IEnumerable) OfType<TResult>(IEnumerable)kan du aktivera en icke-parametriserad eller icke-generisk samling som ska efterfrågas i LINQ-mönstret. De gör detta genom att skapa en starkt typad samling objekt. Klassen Queryable definierar två liknande metoder och Cast<TResult>(IQueryable) OfType<TResult>(IQueryable), som fungerar på objekt av typen Queryable.

Standardfrågeoperatorerna skiljer sig åt i tidpunkten för körningen, beroende på om de returnerar ett singleton-värde eller en sekvens med värden. De metoder som returnerar ett singleton-värde (till exempel Average och Sum) körs omedelbart. Metoder som returnerar en sekvens skjuter upp frågekörningen och returnerar ett uppräkningsbart objekt.

När det gäller de metoder som fungerar på minnesinterna samlingar, det vill: de metoder som utökar IEnumerable<T>, samlar det returnerade uppräkningsbara objektet in argumenten som skickades till metoden. När objektet räknas upp används logiken för frågeoperatorn och frågeresultatet returneras.

Metoder som utökar IQueryable<T> implementerar däremot inte något frågebeteende, utan skapar ett uttrycksträd som representerar frågan som ska utföras. Frågebearbetningen hanteras av källobjektet IQueryable<T> .

Anrop till frågemetoder kan länkas samman i en fråga, vilket gör det möjligt för frågor att bli godtyckligt komplexa.

Följande kodexempel visar hur standardfrågeoperatorerna kan användas för att hämta information om en sekvens.

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

Syntax för frågeuttryck

Några av de vanligare standardfrågeoperatorerna har dedikerad nyckelordssyntax för C# och Visual Basic som gör att de kan anropas som en del av ett frågeuttryck. Mer information om vanliga frågeoperatorer som har dedikerade nyckelord och deras motsvarande syntaxer finns i Frågeuttryckssyntax för Standard Query Operators (Visual Basic).

Utöka standardfrågeoperatorer

Du kan utöka uppsättningen med vanliga frågeoperatorer genom att skapa domänspecifika metoder som är lämpliga för din måldomän eller -teknik. Du kan också ersätta standardfrågeoperatorerna med dina egna implementeringar som tillhandahåller ytterligare tjänster som fjärrutvärdering, frågeöversättning och optimering. Se AsEnumerable ett exempel.

Följande länkar tar dig till ämnen som ger ytterligare information om de olika standardfrågeoperatorerna baserat på funktioner.

Se även