Meer informatie over LINQ query syntax

Opdracht 1 LINQ query syntax

Voer een aantal queries uit op de gegeven lijst met producten en hun prijzen. Gebruik alleen LINQ query syntax.

Specificaties

  • Filter alle producten die duurder zijn dan €20.
  • Sorteer de producten op prijs (aflopend).
  • Groepeer de producten op hun eerste letter.
  • Voer een join uit tussen producten en een lijst met categorieën op basis van CategoryId.

Verwachte output

Producten duurder dan €20:
- Laptop (€899)
- Toetsenbord (€45)
- Monitor (€199)

Producten gesorteerd op prijs (aflopend):
- Laptop (€899)
- Monitor (€199)
- Toetsenbord (€45)
- Muismat (€15)
- USB-stick (€12)

Producten gegroepeerd op eerste letter:
Letter L:
  - Laptop
Letter M:
  - Muismat
  - Monitor
Letter T:
  - Toetsenbord
Letter U:
  - USB-stick

Producten met hun categorie:
- Laptop (€899) - Categorie: Elektronica
- Muismat (€15) - Categorie: Accessoires
- Toetsenbord (€45) - Categorie: Accessoires
- Monitor (€199) - Categorie: Elektronica
- USB-stick (€12) - Categorie: Opslag

Nu jij

using System;
using System.Linq;
 
class Program
{
    static void Main()
    {
        var producten = new[]
        {
            new { Id = 1, Naam = "Laptop", Prijs = 899, CategoryId = 1 },
            new { Id = 2, Naam = "Muismat", Prijs = 15, CategoryId = 2 },
            new { Id = 3, Naam = "Toetsenbord", Prijs = 45, CategoryId = 2 },
            new { Id = 4, Naam = "Monitor", Prijs = 199, CategoryId = 1 },
            new { Id = 5, Naam = "USB-stick", Prijs = 12, CategoryId = 3 }
        };
 
        var categorieën = new[]
        {
            new { CategoryId = 1, CategorieNaam = "Elektronica" },
            new { CategoryId = 2, CategorieNaam = "Accessoires" },
            new { CategoryId = 3, CategorieNaam = "Opslag" }
        };
 
        // 1. Filter producten die duurder zijn dan €20
        var dureProducten = ________
 
        Console.WriteLine("Producten duurder dan €20:");
        foreach (var p in dureProducten)
            Console.WriteLine($"- {p.Naam} (€{p.Prijs})");
 
        // 2. Sorteer producten op prijs (aflopend)
        var gesorteerdeProducten = __________
 
        Console.WriteLine("\nProducten gesorteerd op prijs (aflopend):");
        foreach (var p in gesorteerdeProducten)
            Console.WriteLine($"- {p.Naam} (€{p.Prijs})");
 
        // 3. Groepeer producten op hun eerste letter
        var gegroepeerdeProducten = ________
 
        Console.WriteLine("\nProducten gegroepeerd op eerste letter:");
        foreach (var groep in gegroepeerdeProducten)
        {
            Console.WriteLine($"Letter {groep.Key}:");
            foreach (var p in groep)
                Console.WriteLine($"  - {p.Naam}");
        }
 
        // 4. Join producten met categorieën op CategoryId
        var productenMetCategorie = __________
 
        Console.WriteLine("\nProducten met hun categorie:");
        foreach (var p in productenMetCategorie)
            Console.WriteLine($"- {p.Naam} (€{p.Prijs}) - Categorie: {p.CategorieNaam}");
    }
}

Opdracht 2 LINQ query syntax

Voer een aantal queries uit op de gegeven lijst met boeken. Gebruik alleen LINQ query syntax.

Specificaties

  • Filteren: Haal alle boeken op die meer dan 300 pagina’s bevatten.
  • Sorteren: Sorteer de boeken op titel in alfabetische volgorde.
  • Groeperen: Groepeer de boeken op basis van hun genre.
  • Projectie: Toon een lijst met de titels en auteurs van de boeken.

Verwachte output

Boeken met meer dan 300 pagina’s:
- De Hobbit (310 pagina’s)
- 1984 (328 pagina’s)
- IT (1138 pagina’s)
- Dune (412 pagina’s)

Boeken gesorteerd op titel:
- 1984
- De Alchemist
- De Hobbit
- Dune
- IT

Boeken gegroepeerd per genre:
Dystopie:
  - 1984
Fantasy:
  - De Hobbit
Filosofie:
  - De Alchemist
Horror:
  - IT
Sciencefiction:
  - Dune

Titels en auteurs:
- 1984 door George Orwell
- De Alchemist door Paulo Coelho
- De Hobbit door J.R.R. Tolkien
- Dune door Frank Herbert
- IT door Stephen King

Gemiddeld aantal pagina’s per genre:
Dystopie: 328.0 pagina’s
Fantasy: 310.0 pagina’s
Filosofie: 197.0 pagina’s
Horror: 1138.0 pagina’s
Sciencefiction: 412.0 pagina’s

Nu jij

using System;
using System.Collections.Generic;
using System.Linq;
 
class Boek
{
    public string Titel { get; set; }
    public string Auteur { get; set; }
    public int Paginas { get; set; }
    public string Genre { get; set; }
}
 
class Program
{
    static void Main()
    {
        List<Boek> boeken = new List<Boek>
        {
            new Boek { Titel = "De Hobbit", Auteur = "J.R.R. Tolkien", Paginas = 310, Genre = "Fantasy" },
            new Boek { Titel = "1984", Auteur = "George Orwell", Paginas = 328, Genre = "Dystopie" },
            new Boek { Titel = "De Alchemist", Auteur = "Paulo Coelho", Paginas = 197, Genre = "Filosofie" },
            new Boek { Titel = "IT", Auteur = "Stephen King", Paginas = 1138, Genre = "Horror" },
            new Boek { Titel = "Dune", Auteur = "Frank Herbert", Paginas = 412, Genre = "Sciencefiction" }
        };
 
        // 1. Filteren: Boeken met meer dan 300 pagina’s
        var gefilterdeBoeken = ________;
 
        Console.WriteLine("Boeken met meer dan 300 pagina’s:");
        foreach (var boek in gefilterdeBoeken)
        {
            Console.WriteLine($"- {boek.Titel} ({boek.Paginas} pagina’s)");
        }
 
        // 2. Sorteren: Alfabetisch op titel
        var gesorteerdeBoeken = ________;
 
        Console.WriteLine("\nBoeken gesorteerd op titel:");
        foreach (var boek in gesorteerdeBoeken)
        {
            Console.WriteLine($"- {boek.Titel}");
        }
 
        // 3. Groeperen: Boeken per genre
        var boekenPerGenre = ________;
 
        Console.WriteLine("\nBoeken gegroepeerd per genre:");
        foreach (var groep in boekenPerGenre)
        {
            Console.WriteLine($"{groep.Key}:");
            foreach (var boek in groep)
            {
                Console.WriteLine($"  - {boek.Titel}");
            }
        }
 
        // 4. Projectie: Alleen titels en auteurs tonen
        var titelsEnAuteurs = ________;
 
        Console.WriteLine("\nTitels en auteurs:");
        foreach (var item in titelsEnAuteurs)
        {
            Console.WriteLine($"- {item.Titel} door {item.Auteur}");
        }
 
        // Bonus: Gemiddeld aantal pagina’s per genre
        var gemiddeldePaginasPerGenre = ________;
 
        Console.WriteLine("\nGemiddeld aantal pagina’s per genre:");
        foreach (var item in gemiddeldePaginasPerGenre)
        {
            Console.WriteLine($"{item.Genre}: {item.Gemiddeld:F1} pagina’s");
        }
    }
}