Junior
Ben je bekend met LINQ?
sobes.tech AI
Antwoord van AI
Ja, ik ken het.
LINQ (Language Integrated Query) is een verzameling technologieën die queryfunctionaliteit integreert in de programmeertaal C#. Het stelt je in staat om queries te schrijven naar verschillende gegevensbronnen (collecties, databases, XML, enz.) direct in de C#-code, met behulp van een uniforme syntax en model.
Belangrijkste componenten en kenmerken van LINQ:
- LINQ-providers: Implementeren interfaces en klassen die LINQ-queries vertalen naar specifieke commando's voor een bepaalde gegevensbron. Voorbeelden: LINQ to Objects, LINQ to SQL, LINQ to XML.
- LINQ-operatoren: Uitbreidingen voor IEnumerable<T> en IQueryable<T>, die standaard query-operaties bieden zoals filteren, projectie, sorteren, groeperen en aggregatie. Ze bestaan in twee vormen:
- Query-syntax (Query Syntax), die lijkt op SQL:
// Voorbeeld van query-syntax var query = from item in collection where item.Property > 10 orderby item.AnotherProperty select item.Result; - Methodesyntax (Method Syntax), die gebruikmaakt van extension-methoden:
// Voorbeeld van methodesyntax var query = collection.Where(item => item.Property > 10) .OrderBy(item => item.AnotherProperty) .Select(item => item.Result);
- Query-syntax (Query Syntax), die lijkt op SQL:
- Uitgestelde uitvoering (Deferred Execution): LINQ-queries worden niet meteen uitgevoerd bij hun definitie. De uitvoering vindt pas plaats wanneer het resultaat echt nodig is (bijvoorbeeld bij iteratie met
foreach, aanroepen vanToList(),ToArray(),Count(), enz.). Dit optimaliseert de verwerking van gegevens. - Sterke typing: LINQ maakt gebruik van de voordelen van statische typing in C#, met compile-tijd controles en IntelliSense.
- Combinatie-mogelijkheid: Query-operatoren kunnen gemakkelijk worden gecombineerd om complexe queries te maken.
- Uitbreidbaarheid: Je kunt je eigen LINQ-providers en -operatoren maken.
Meest gebruikte LINQ-operatoren:
| Categorie | Operatoren in methodesyntax | Beschrijving |
|---|---|---|
| Filteren | Where, OfType | Selectie van elementen op basis van voorwaarde of type. |
| Projectie | Select, SelectMany | Transformatie van elementen of uitvouwen. |
| Sorteren | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse | Sorteren van elementen. |
| Groeperen | GroupBy | Groeperen van elementen op sleutel. |
| Samenvoegen | Join, GroupJoin | Samenvoegen van elementen uit verschillende bronnen. |
| Aggregatie | Count, LongCount, Sum, Average, Min, Max, Aggregate | Berekenen van geaggregeerde waarden. |
| Kwantoren | All, Any, Contains, SequenceEqual | Controleren op aanwezigheid of overeenstemming van elementen. |
| Elementen | First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty | Ophalen van individuele elementen. |
| Segmentatie | Take, Skip, TakeWhile, SkipWhile | Selecteren of overslaan van elementen. |
| Conversie | ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable | Omzetten naar andere collectie-typen. |
| Generatie | Range, Repeat | Sequenties maken. |
| Verzamelingen | Distinct, Union, Intersect, Except | Operaties op verzamelingen. |
| Zip | Zip | Elementen uit twee sequenties combineren. |
LINQ vereenvoudigt en maakt de code leesbaarder voor werken met gegevens in C#.