Sobes.tech
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);
      
  • 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 van ToList(), 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#.