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}"); }}
Mogelijke uitwerking
// 1. Filter: Producten duurder dan €20var dureProducten = producten.Where(p => p.Prijs > 20);// 2. Sorteren: Producten op prijs (laag naar hoog)var gesorteerdeProducten = producten.OrderBy(p => p.Prijs);// 3. Groeperen: Producten per categorievar productenPerCategorie = producten.GroupBy(p => p.Categorie);// 4. Projectie: Alleen naam en prijs selecterenvar namenEnPrijzen = producten.Select(p => new { 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)
Gebruik LINQ join om een lijst te maken waarin elke student gekoppeld wordt aan zijn of haar cijfers.
Geef alle studenten met hun hoogste cijfer.
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"); } }}
Mogelijke uitwerking
// 1. LINQ Join: Koppel studenten aan hun cijfersvar studentCijfers = studenten.Join( cijfers, student => student.Id, cijfer => cijfer.StudentId, (student, cijfer) => new { student.Naam, cijfer.Vak, cijfer.Score } );// 2. Studenten en hun hoogste cijfervar hoogsteCijfers = cijfers.GroupBy(c => c.StudentId) .Select(g => new { StudentId = g.Key, HoogsteCijfer = g.Max(c => c.Score) }) .Join(studenten, cijfer => cijfer.StudentId, student => student.Id, (cijfer, student) => new { student.Naam, cijfer.HoogsteCijfer });// 3. Aantal studenten per vakvar vakkenAantalStudenten = cijfers .GroupBy(c => c.Vak) .Select(g => new { Vak = g.Key, AantalStudenten = g.Select(c => c.StudentId).Distinct().Count() });