Share via


Overzicht van Standard-queryoperators (Visual Basic)

De standaardqueryoperators zijn de methoden die het LINQ-patroon vormen. De meeste van deze methoden werken op reeksen, waarbij een reeks een object is waarvan het type de IEnumerable<T> interface of de IQueryable<T> interface implementeert. De standaardqueryoperators bieden querymogelijkheden, waaronder filteren, projectie, aggregatie, sorteren en meer.

Er zijn twee sets linQ-standaardqueryoperators, een die werkt op objecten van het type IEnumerable<T> en de andere die op objecten van het type IQueryable<T>werkt. De methoden waaruit elke set bestaat, zijn respectievelijk statische leden van de Enumerable en Queryable klassen. Ze worden gedefinieerd als uitbreidingsmethoden van het type waarop ze werken. Dit betekent dat ze kunnen worden aangeroepen met behulp van de syntaxis van de statische methode of de syntaxis van de instantiemethode.

Daarnaast werken verschillende standaardqueryoperatormethoden op andere typen dan die op IEnumerable<T> basis van of IQueryable<T>. Het Enumerable type definieert twee methoden die beide op objecten van het type IEnumerablewerken. Met deze methoden Cast<TResult>(IEnumerable) kunt OfType<TResult>(IEnumerable)u een niet-geparameteriseerde of niet-algemene verzameling inschakelen om een query uit te voeren in het LINQ-patroon. Ze doen dit door een sterk getypeerde verzameling objecten te maken. De Queryable klasse definieert twee vergelijkbare methoden Cast<TResult>(IQueryable) en OfType<TResult>(IQueryable), die werken op objecten van het type Queryable.

De standaardqueryoperators verschillen in de timing van de uitvoering, afhankelijk van of ze een singleton-waarde of een reeks waarden retourneren. Deze methoden die een singleton-waarde retourneren (bijvoorbeeld Average en Sum) worden onmiddellijk uitgevoerd. Methoden die een reeks retourneren, stellen de uitvoering van de query uit en retourneren een opsommingsobject.

In het geval van de methoden die worden uitgevoerd op in-memory verzamelingen, dat wil gezegd, die methoden die uitbreiden IEnumerable<T>, legt het geretourneerde enumerable object de argumenten vast die zijn doorgegeven aan de methode. Wanneer dat object is geïnventariseerd, wordt de logica van de queryoperator gebruikt en worden de queryresultaten geretourneerd.

Methoden die daarentegen worden uitgebreid IQueryable<T> , implementeren geen querygedrag, maar bouwen een expressiestructuur die de query vertegenwoordigt die moet worden uitgevoerd. De queryverwerking wordt verwerkt door het bronobject IQueryable<T> .

Aanroepen naar querymethoden kunnen in één query worden gekoppeld, waardoor query's willekeurig complex kunnen worden.

In het volgende codevoorbeeld ziet u hoe de standaardqueryoperators kunnen worden gebruikt om informatie over een reeks te verkrijgen.

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

Syntaxis van query-expressie

Sommige van de veelgebruikte standaardqueryoperators hebben een speciale syntaxis voor C# en de Visual Basic-taal waarmee ze kunnen worden aangeroepen als onderdeel van een query-expressie. Zie queryexpressiesyntaxis voor Standard-queryoperators (Visual Basic) voor meer informatie over standaardqueryoperators met toegewezen trefwoorden en de bijbehorende syntaxis.

De standaardqueryoperators uitbreiden

U kunt de set standaardqueryoperators uitbreiden door domeinspecifieke methoden te maken die geschikt zijn voor uw doeldomein of -technologie. U kunt ook de standaardqueryoperators vervangen door uw eigen implementaties die aanvullende services bieden, zoals externe evaluatie, queryomzetting en optimalisatie. Zie AsEnumerable een voorbeeld.

Met de volgende koppelingen gaat u naar onderwerpen die aanvullende informatie bieden over de verschillende standaardqueryoperators op basis van functionaliteit.

Zie ook