N292 LINQ (objekter)
Start med at skabe en tom konsol applikation og tilføj følgende klasse:
class Faktura
{
public DateTime Dato { get; set; }
public int Nummer { get; set; }
public string Kunde { get; set; }
public string Region { get; set; }
public double Salg { get; set; }
public static List<Faktura> HentFakturaer()
{
List<Faktura> lst = new List<Faktura> {
new Faktura{ Dato = new DateTime(2020,7,1), Nummer = 1, Kunde = "Jens", Region = "Fyn", Salg = 100 },
new Faktura{ Dato = new DateTime(2020,5,1), Nummer = 2, Kunde = "Anders", Region = "Fyn", Salg = 300 },
new Faktura{ Dato = new DateTime(2021,1,1), Nummer = 3, Kunde = "Mette", Region = "Sjælland", Salg = 150 },
new Faktura{ Dato = new DateTime(2020,12,1), Nummer = 4, Kunde = "Hans", Region = "Jylland", Salg = 900 },
new Faktura{ Dato = new DateTime(2021,3,15), Nummer = 5, Kunde = "Pia", Region = "Jylland", Salg = 200 },
new Faktura{ Dato = new DateTime(2021,4,20), Nummer = 6, Kunde = "Bo", Region = "Sjælland", Salg = 250 },
new Faktura{ Dato = new DateTime(2021,5,10), Nummer = 7, Kunde = "Lars", Region = "Fyn", Salg = 400 },
new Faktura{ Dato = new DateTime(2021,6,5), Nummer = 8, Kunde = "Hanne", Region = "Jylland", Salg = 350 },
new Faktura{ Dato = new DateTime(2021,7,1), Nummer = 9, Kunde = "Marie", Region = "Sjælland", Salg = 500 },
new Faktura{ Dato = new DateTime(2021,8,12), Nummer = 10, Kunde = "Søren", Region = "Fyn", Salg = 600 },
new Faktura{ Dato = new DateTime(2021,9,3), Nummer = 11, Kunde = "Niels", Region = "Jylland", Salg = 450 },
new Faktura{ Dato = new DateTime(2021,10,15), Nummer = 12, Kunde = "Eva", Region = "Sjælland", Salg = 550 },
new Faktura{ Dato = new DateTime(2021,11,22), Nummer = 13, Kunde = "Ole", Region = "Fyn", Salg = 700 },
new Faktura{ Dato = new DateTime(2021,12,18), Nummer = 14, Kunde = "Kurt", Region = "Jylland", Salg = 800 },
new Faktura{ Dato = new DateTime(2022,1,10), Nummer = 15, Kunde = "Bente", Region = "Sjælland", Salg = 650 },
new Faktura{ Dato = new DateTime(2022,2,5), Nummer = 16, Kunde = "Lene", Region = "Fyn", Salg = 750 },
new Faktura{ Dato = new DateTime(2022,3,12), Nummer = 17, Kunde = "Henrik", Region = "Jylland", Salg = 850 },
new Faktura{ Dato = new DateTime(2022,4,20), Nummer = 18, Kunde = "Grethe", Region = "Sjælland", Salg = 900 },
new Faktura{ Dato = new DateTime(2022,5,30), Nummer = 19, Kunde = "Birgit", Region = "Fyn", Salg = 950 },
new Faktura{ Dato = new DateTime(2022,6,15), Nummer = 20, Kunde = "Per", Region = "Jylland", Salg = 1000 },
new Faktura{ Dato = new DateTime(2022,7,10), Nummer = 21, Kunde = "Thomas", Region = "Sjælland", Salg = 1100 },
new Faktura{ Dato = new DateTime(2022,8,5), Nummer = 22, Kunde = "Anita", Region = "Fyn", Salg = 1200 },
new Faktura{ Dato = new DateTime(2022,9,1), Nummer = 23, Kunde = "Helge", Region = "Jylland", Salg = 1300 },
new Faktura{ Dato = new DateTime(2022,10,15), Nummer = 24, Kunde = "Inge", Region = "Sjælland", Salg = 1400 }
};
return lst;
}
public override string ToString()
{
return $"{Dato.ToShortDateString()} {Nummer} {Kunde} ({Region})";
}
}
Brug den statiske metode HentFakturaer til at hente test data:
Brug nu LINQ til følgende:
- Udskriv alle (bemærk at ToString er overskrevet i klassen - den kan du bruge til udskrift. Se løsning)
- Udskriv alle sorteret efter kunde
- Udskriv alle sorteret efter dato
- Udskriv alle på Fyn sorteret efter dato
- Udskriv antal på Fyn
- Udskriv samlet salg
- Udskriv samlet salg på Fyn
Klik for at se et forslag til en løsning
using System;
using System.Collections.Generic;
using System.Linq;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
var fakturaer = Faktura.HentFakturaer();
// Vis alle
fakturaer.ForEach(f => Console.WriteLine(f));
// Sorteret efter kunde
Console.WriteLine();
fakturaer.OrderBy(f => f.Kunde).ToList().ForEach(f => Console.WriteLine(f));
// Sorteret efter dato
Console.WriteLine();
fakturaer.OrderBy(f => f.Dato).ToList().ForEach(f => Console.WriteLine(f));
// Kun Fyn sorteret efter dato
Console.WriteLine();
fakturaer.Where(f => f.Region == "Fyn").OrderBy(f => f.Dato).ToList().ForEach(f => Console.WriteLine(f));
// Antal på Fyn
Console.WriteLine();
Console.WriteLine(fakturaer.Count(f => f.Region == "Fyn"));
// Samlet salg
Console.WriteLine();
Console.WriteLine(fakturaer.Sum(f => f.Salg).ToString("N2"));
// Samlet salg på Fyn
Console.WriteLine();
Console.WriteLine(fakturaer.Where(i => i.Region == "Fyn").Sum(f => f.Salg).ToString("N2"));
}
}
class Faktura
{
public DateTime Dato { get; set; }
public int Nummer { get; set; }
public string Kunde { get; set; }
public string Region { get; set; }
public double Salg { get; set; }
public static List<Faktura> HentFakturaer()
{
List<Faktura> lst = new List<Faktura> {
new Faktura{ Dato = new DateTime(2020,7,1), Nummer = 1, Kunde ="Jens", Region = "Fyn", Salg = 100 },
new Faktura{ Dato = new DateTime(2020,5,1), Nummer = 2, Kunde ="Anders", Region = "Fyn", Salg = 300 },
new Faktura{ Dato = new DateTime(2021,1,1), Nummer = 3, Kunde ="Mette", Region = "Sjælland", Salg = 150 },
new Faktura{ Dato = new DateTime(2020,12,1), Nummer = 4, Kunde ="Hans", Region = "Jylland", Salg = 900 },
};
return lst;
}
public override string ToString()
{
return $"{Dato.ToShortDateString()} {Nummer} {Kunde} ({Region})";
}
}
}