Wat is LINQ?
LINQ (Language Integrated Query) is een set methoden waarmee je collecties kunt filteren, sorteren en transformeren met leesbare, expressieve code. Het werkt op elke collectie die IEnumerable<T> implementeert: arrays, lijsten, enzovoort.
Voeg bovenaan je bestand toe: using System.Linq; (in .NET 6+ is dit al automatisch beschikbaar).
Where: filteren
List<string> lagen = new List<string> { "Muren", "Deuren", "Ramen", "Maatvoering", "Hulplijnen" };
// Alle lagen waarvan de naam met 'M' begint:
var gefiltreerd = lagen.Where(l => l.StartsWith("M")).ToList();
// [ "Muren", "Maatvoering" ]
Select: transformeren
// Converteer namen naar hoofdletters:
var hoofdletters = lagen.Select(l => l.ToUpper()).ToList();
// [ "MUREN", "DEUREN", "RAMEN", "MAATVOERING", "HULPLIJNEN" ]
OrderBy: sorteren
var gesorteerd = lagen.OrderBy(l => l).ToList();
// alfabetisch gesorteerd
var omgekeerd = lagen.OrderByDescending(l => l.Length).ToList();
// langste naam eerst
FirstOrDefault en Count
string? eersteM = lagen.FirstOrDefault(l => l.StartsWith("M"));
// "Muren" (of null als niets gevonden)
int aantalKort = lagen.Count(l => l.Length <= 5);
// 2 ("Ramen" = 5, "Deuren" heeft 6 dus niet meegerekend...)
LINQ op objecten
class Onderdeel
{
public string Naam { get; set; } = "";
public double Gewicht { get; set; }
public string Materiaal { get; set; } = "";
}
List<Onderdeel> onderdelen = new List<Onderdeel>
{
new Onderdeel { Naam = "Bout M8", Gewicht = 0.02, Materiaal = "Staal" },
new Onderdeel { Naam = "Moer M8", Gewicht = 0.01, Materiaal = "Staal" },
new Onderdeel { Naam = "Schijf M8", Gewicht = 0.005, Materiaal = "Nylon" },
new Onderdeel { Naam = "Profiel 40", Gewicht = 2.5, Materiaal = "Aluminium" },
};
// Alle stalen onderdelen, gesorteerd op gewicht:
var staalOnderdelen = onderdelen
.Where(o => o.Materiaal == "Staal")
.OrderBy(o => o.Gewicht)
.ToList();
// Totaal gewicht:
double totaal = onderdelen.Sum(o => o.Gewicht);
Console.WriteLine($"Totaal gewicht: {totaal} kg");
Lambda-expressies uitgelegd
De notatie l => l.StartsWith("M") heet een lambda. Het is een mini-methode zonder naam:
l— de parameter (het huidige item in de lijst)=>— "geeft terug"l.StartsWith("M")— de expressie dietrueoffalseoplevert
In de volgende post leren we het verschil tussen reference types en value types — cruciaal om bugs te vermijden.
Comments
No comments yet — be the first!
Leave a comment
Sign in to skip moderation — anonymous comments are reviewed before appearing.