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}"); }}
Mogelijke uitwerking
// 1. Filter producten die duurder zijn dan €20var dureProducten = from p in producten where p.Prijs > 20 select p;// 2. Sorteer producten op prijs (aflopend)var gesorteerdeProducten = from p in producten orderby p.Prijs descending select p;// 3. Groepeer producten op hun eerste lettervar gegroepeerdeProducten = from p in producten group p by p.Naam[0] into g select g;// 4. Join producten met categorieën op CategoryIdvar productenMetCategorie = from p in producten join c in categorieën on p.CategoryId equals c.CategoryId select new { p.Naam, p.Prijs, c.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"); } }}
Mogelijke uitwerking
// 1. Filteren: Boeken met meer dan 300 pagina’svar gefilterdeBoeken = from boek in boeken where boek.Paginas > 300 select boek;// 2. Sorteren: Alfabetisch op titelvar gesorteerdeBoeken = from boek in boeken orderby boek.Titel select boek;// 3. Groeperen: Boeken per genrevar boekenPerGenre = from boek in boeken group boek by boek.Genre into genreGroep select genreGroep;// 4. Projectie: Alleen titels en auteurs tonenvar titelsEnAuteurs = from boek in boeken select new { boek.Titel, boek.Auteur };