Meer informatie over LINQ method syntax

Opdracht 1 LINQ method syntax

Voer een aantal queries uit op de gegeven lijst met producten. Gebruik alleen LINQ method syntax.

Specificaties

  • Filter: Selecteer alle producten duurder dan €20.
  • Sorteren: Sorteer de producten op prijs (van laag naar hoog).
  • Groeperen: Groepeer de producten op categorie.
  • Projectie: Selecteer alleen de namen en prijzen van de producten.

Verwachte output

Producten duurder dan €20:
- Laptop (€999.99)
- Bureau (€150.00)
- Stoel (€85.50)

Producten gesorteerd op prijs:
- Boek (€14.99)
- Muis (€19.99)
- Stoel (€85.50)
- Bureau (€150.00)
- Laptop (€999.99)

Producten gegroepeerd per categorie:
Elektronica:
  - Laptop
  - Muis
Boeken:
  - Boek
Meubels:
  - Bureau
  - Stoel

Productnamen en prijzen:
- Laptop: €999.99
- Muis: €19.99
- Boek: €14.99
- Bureau: €150.00
- Stoel: €85.50

Nu jij

using System;
using System.Collections.Generic;
using System.Linq;
 
class Product
{
    public string Naam { get; set; }
    public decimal Prijs { get; set; }
    public string Categorie { get; set; }
}
 
class Program
{
    static void Main()
    {
        List<Product> producten = new List<Product>
        {
            new Product { Naam = "Laptop", Prijs = 999.99m, Categorie = "Elektronica" },
            new Product { Naam = "Muis", Prijs = 19.99m, Categorie = "Elektronica" },
            new Product { Naam = "Boek", Prijs = 14.99m, Categorie = "Boeken" },
            new Product { Naam = "Bureau", Prijs = 150.00m, Categorie = "Meubels" },
            new Product { Naam = "Stoel", Prijs = 85.50m, Categorie = "Meubels" }
        };
 
        // 1. Filter: Producten duurder dan €20
        var dureProducten = producten.________
        Console.WriteLine("Producten duurder dan €20:");
        foreach (var p in dureProducten)
            Console.WriteLine($"- {p.Naam} (€{p.Prijs})");
 
        // 2. Sorteren: Producten op prijs (laag naar hoog)
        var gesorteerdeProducten = producten.________
        Console.WriteLine("\nProducten gesorteerd op prijs:");
        foreach (var p in gesorteerdeProducten)
            Console.WriteLine($"- {p.Naam} (€{p.Prijs})");
 
        // 3. Groeperen: Producten per categorie
        var productenPerCategorie = producten.________
        Console.WriteLine("\nProducten gegroepeerd per categorie:");
        foreach (var groep in productenPerCategorie)
        {
            Console.WriteLine($"{groep.Key}:");
            foreach (var p in groep)
                Console.WriteLine($"  - {p.Naam}");
        }
 
        // 4. Projectie: Alleen naam en prijs selecteren
        var namenEnPrijzen = producten.________
        Console.WriteLine("\nProductnamen en prijzen:");
        foreach (var p in namenEnPrijzen)
            Console.WriteLine($"- {p.Naam}: €{p.Prijs}");
    }
}

Opdracht 2 LINQ join

Gebruik LINQ join om gegevens uit lijsten te combineren.

Specificaties

Je hebt twee lijsten:

  • Lijst met studenten (ID, Naam)
  • Lijst met cijfers (StudentID, Vak, Cijfer)
  1. Gebruik LINQ join om een lijst te maken waarin elke student gekoppeld wordt aan zijn of haar cijfers.
  2. Geef alle studenten met hun hoogste cijfer.
  3. Toon alle vakken en hoeveel studenten elk vak volgen.

Verwachte output

Query 1

Studenten en hun cijfers:
Alice - Wiskunde: 8.5
Alice - Engels: 7.8
Bob - Wiskunde: 6.4
Charlie - Engels: 9.1

Query 2

Alice - Hoogste cijfer: 8.5  
Bob - Hoogste cijfer: 6.4  
Charlie - Hoogste cijfer: 9.1  

Query 3

Wiskunde: 2 studenten  
Engels: 2 studenten  

Nu jij

using System;
using System.Collections.Generic;
using System.Linq;
 
class Student
{
    public int Id { get; set; }
    public string Naam { get; set; }
}
 
class Cijfer
{
    public int StudentId { get; set; }
    public string Vak { get; set; }
    public double Score { get; set; }
}
 
class Program
{
    static void Main()
    {
        List<Student> studenten = new List<Student>
        {
            new Student { Id = 1, Naam = "Alice" },
            new Student { Id = 2, Naam = "Bob" },
            new Student { Id = 3, Naam = "Charlie" }
        };
 
        List<Cijfer> cijfers = new List<Cijfer>
        {
            new Cijfer { StudentId = 1, Vak = "Wiskunde", Score = 8.5 },
            new Cijfer { StudentId = 1, Vak = "Engels", Score = 7.8 },
            new Cijfer { StudentId = 2, Vak = "Wiskunde", Score = 6.4 },
            new Cijfer { StudentId = 3, Vak = "Engels", Score = 9.1 }
        };
 
        // 1. LINQ Join: Koppel studenten aan hun cijfers
        var studentCijfers = studenten.________
 
        // Output
        Console.WriteLine("Studenten en hun cijfers:");
        foreach (var item in studentCijfers)
        {
            Console.WriteLine($"{item.Naam} - {item.Vak}: {item.Score}");
        }
 
        // 2. Studenten en hun hoogste cijfer
        var hoogsteCijfers = cijfers.________
 
        foreach (var item in hoogsteCijfers)
        {
            Console.WriteLine($"{item.Naam} - Hoogste cijfer: {item.HoogsteCijfer}");
        }
 
        // 3. Aantal studenten per vak
        var vakkenAantalStudenten = cijfers.________
 
        foreach (var item in vakkenAantalStudenten)
        {
            Console.WriteLine($"{item.Vak}: {item.AantalStudenten} studenten");
        }
    }
}