Share via


Standaardqueryoperators in LINQ naar entiteitenquery's

In een query geeft u de informatie op die u wilt ophalen uit de gegevensbron. Een query kan ook opgeven hoe deze informatie moet worden gesorteerd, gegroepeerd en vormgegeven voordat deze wordt geretourneerd. LINQ biedt een set standaardquerymethoden die u in een query kunt gebruiken. De meeste van deze methoden werken op reeksen; in deze context is een reeks een object waarvan het type de IEnumerable<T> interface of de IQueryable<T> interface implementeert. De queryfunctionaliteit van de standaardqueryoperators omvat filteren, projectie, aggregatie, sortering, groepering, paging en meer. Sommige veelgebruikte standaardqueryoperators hebben toegewezen syntaxis voor trefwoorden, zodat ze kunnen worden aangeroepen met behulp van de syntaxis van de query-expressie. Een query-expressie is een andere, beter leesbare manier om een query uit te drukken dan het equivalent op basis van de methode. Queryexpressiecomponenten worden tijdens het compileren omgezet in aanroepen naar de querymethoden. Zie Overzicht van Standard-queryoperators voor een lijst met standaardqueryoperators met gelijkwaardige queryexpressies.

Niet alle standaardqueryoperators worden ondersteund in LINQ naar entiteiten-query's. Zie Ondersteunde en niet-ondersteunde LINQ-methoden (LINQ naar entiteiten) voor meer informatie. In dit onderwerp vindt u informatie over de standaardqueryoperators die specifiek zijn voor LINQ naar entiteiten. Zie Bekende problemen en overwegingen in LINQ naar entiteiten voor meer informatie over bekende problemen in LINQ naar entiteiten.

Projectie- en filtermethoden

Projectie verwijst naar het transformeren van de elementen van een resultatenset in een gewenste vorm. U kunt bijvoorbeeld een subset van de eigenschappen die u nodig hebt van elk object in de resultatenset projecties, een eigenschap project maken en er een wiskundige berekening op uitvoeren, of u kunt het hele object uit de resultatenset projecties uitvoeren. De projectiemethoden zijn Select en SelectMany.

Filteren verwijst naar de werking van het beperken van de resultatenset zodat alleen de elementen bevatten die overeenkomen met een opgegeven voorwaarde. De filtermethode is Where.

De meeste overbelastingen van de projectie- en filtermethoden worden ondersteund in LINQ naar entiteiten, met uitzondering van de methoden die een positioneel argument accepteren.

Joinmethoden

Samenvoegen is een belangrijke bewerking in query's die zijn gericht op gegevensbronnen die geen bevaarbare relaties met elkaar hebben. Een join van twee gegevensbronnen is de koppeling van objecten in de ene gegevensbron met objecten in de andere gegevensbron die een gemeenschappelijk kenmerk of een gemeenschappelijke eigenschap delen. De joinmethoden zijn Join en GroupJoin.

De meeste overbelastingen van de joinmethoden worden ondersteund, met uitzondering van de methoden die gebruikmaken van een IEqualityComparer<T>. Dit komt doordat de vergelijkingsfunctie niet kan worden vertaald naar de gegevensbron.

Methoden instellen

Setbewerkingen in LINQ zijn querybewerkingen die de resultatensets baseren op de aanwezigheid of afwezigheid van equivalente elementen binnen hetzelfde of in een andere verzameling (of set). De setmethoden zijnAll, Any, , Concat, Contains, DefaultIfEmpty, Distinct, , EqualAll, , Excepten IntersectUnion.

De meeste overbelastingen van de setmethoden worden ondersteund in LINQ naar entiteiten, maar er zijn enkele verschillen in gedrag vergeleken met LINQ naar objecten. Het instellen van methoden die gebruikmaken van een IEqualityComparer<T> methode wordt echter niet ondersteund omdat de vergelijkingsfunctie niet kan worden vertaald naar de gegevensbron.

Bestelmethoden

Rangschikken of sorteren verwijst naar de volgorde van de elementen van een resultatenset op basis van een of meer kenmerken. Door meer dan één sorteercriterium op te geven, kunt u de banden binnen een groep verbreken.

De meeste overbelastingen van de bestelmethoden worden ondersteund, met uitzondering van de methoden die een IComparer<T>. Dit komt doordat de vergelijkingsfunctie niet kan worden vertaald naar de gegevensbron. De volgordemethoden zijnOrderBy, OrderByDescending, , ThenByen ThenByDescendingReverse.

Omdat de query wordt uitgevoerd op de gegevensbron, kan het gedrag van de volgorde verschillen van query's die in de CLR worden uitgevoerd. Dit komt doordat bestelopties, zoals volgorde van hoofdletters, kanjivolgorde en null-volgorde, in de gegevensbron kunnen worden ingesteld. Afhankelijk van de gegevensbron kunnen deze bestelopties andere resultaten opleveren dan in de CLR.

Als u dezelfde sleutelkiezer opgeeft in meer dan één bestelbewerking, wordt er een dubbele volgorde geproduceerd. Dit is ongeldig en er wordt een uitzondering gegenereerd.

Groeperingsmethoden

Groeperen verwijst naar het plaatsen van gegevens in groepen, zodat de elementen in elke groep een gemeenschappelijk kenmerk delen. De groeperingsmethode is GroupBy.

De meeste overbelastingen van de groeperingsmethoden worden ondersteund, met uitzondering van de methoden die gebruikmaken van een IEqualityComparer<T>. Dit komt doordat de vergelijkingsfunctie niet kan worden vertaald naar de gegevensbron.

De groeperingsmethoden worden toegewezen aan de gegevensbron met behulp van een afzonderlijke subquery voor de sleutelkiezer. De subquery voor sleutelkiezervergelijking wordt uitgevoerd met behulp van de semantiek van de gegevensbron, inclusief problemen met betrekking tot het vergelijken null van waarden.

Statistische methoden

Een aggregatiebewerking berekent één waarde uit een verzameling waarden. Het berekenen van de gemiddelde dagelijkse temperatuur van een maand aan dagelijkse temperatuurwaarden is bijvoorbeeld een aggregatiebewerking. De statistische methoden zijnAggregate, , CountAverage, , LongCount, Max, en Min.Sum

De meeste overbelastingen van de statistische methoden worden ondersteund. Voor gedrag met betrekking tot null-waarden gebruiken de statistische methoden de semantiek van de gegevensbron. Het gedrag van de aggregatiemethoden wanneer er null-waarden bij betrokken zijn, kan afwijken, afhankelijk van welke back-endgegevensbron wordt gebruikt. Het gedrag van statistische methoden met behulp van de semantiek van de gegevensbron kan ook afwijken van wat wordt verwacht van CLR-methoden. Het standaardgedrag voor de Sum methode in SQL Server is bijvoorbeeld om null-waarden te negeren in plaats van een uitzondering te genereren.

Eventuele uitzonderingen die het gevolg zijn van aggregatie, zoals een overloop van de Sum functie, worden gegenereerd als uitzonderingen voor gegevensbronnen of Entity Framework-uitzonderingen tijdens de materialisatie van de queryresultaten.

Voor deze methoden waarbij een berekening plaatsvindt via een reeks, zoals Sum of Average, wordt de werkelijke berekening uitgevoerd op de server. Als gevolg hiervan kunnen typeconversies en verlies van precisie optreden op de server en kunnen de resultaten verschillen van wat wordt verwacht met behulp van CLR-semantiek.

Het standaardgedrag van de statistische methoden voor null-/niet-null-waarden wordt weergegeven in de volgende tabel:

Wijze Geen gegevens Alle null-waarden Sommige null-waarden Geen null-waarden
Average Retourneert null. Retourneert null. Retourneert het gemiddelde van de niet-null-waarden in een reeks. Berekent het gemiddelde van een reeks numerieke waarden.
Count Geeft als resultaat 0 Retourneert het aantal null-waarden in de reeks. Retourneert het aantal null- en niet-null-waarden in de reeks. Retourneert het aantal elementen in de reeks.
Max Retourneert null. Retourneert null. Retourneert de maximumwaarde die niet null is in een reeks. Retourneert de maximumwaarde in een reeks.
Min Retourneert null. Retourneert null. Retourneert de minimale niet-null-waarde in een reeks. Retourneert de minimumwaarde in een reeks.
Sum Retourneert null. Retourneert null. Retourneert de som van de niet-null-waarde in een reeks. Berekent de som van een reeks numerieke waarden.

Typemethoden

De twee LINQ-methoden die te maken hebben met typeconversie en testen, worden beide ondersteund in de context van het Entity Framework. Dit betekent dat de enige ondersteunde typen typen zijn die zijn toegewezen aan het juiste Entity Framework-type. Zie Conceptuele modeltypen (CSDL) voor een lijst met deze typen. De typemethoden zijn Convert en OfType.

OfType wordt ondersteund voor entiteitstypen. Convert wordt ondersteund voor primitieve typen conceptuele modellen. De C# is en as methoden worden ook ondersteund.

Pagingmethoden

Pagingbewerkingen retourneren één element of meerdere elementen uit een reeks. De ondersteunde pagingmethoden zijnFirst, FirstOrDefault, Single, SingleOrDefault, en Skip.Take

Een aantal pagingmethoden wordt niet ondersteund, omdat functies niet kunnen worden toegewezen aan de gegevensbron of door het ontbreken van impliciete volgorde van sets op de gegevensbron. Methoden die een standaardwaarde retourneren, zijn beperkt tot primitieve typen conceptueel model en verwijzingstypen met null-standaardwaarden. Pagingmethoden die worden uitgevoerd op een lege reeks, retourneren null.

Zie ook