O292 LINQ (projektering)
Start med at skabe en tom konsol applikation og tilføj følgende klasser:
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})";
}
}
Brug nu LINQ til at projektere samlingen af Faktura
til:
- En samling af
MiniFaktura
, som indeholderNummer
ogKunde
.
- En samling af anonyme objekter, som indeholder
Nummer
ogKunde
. - En samling af navngivne tuples, som indeholder
Nummer
ogKunde
.
Brug den statiske metode HentFakturaer
til at hente test data:
Klik for at se et forslag til en løsning
var fakturaer = Faktura.HentFakturaer();
// Projektering til MiniFaktura
var miniFakturaer = fakturaer.Select(f => new MiniFaktura
{
Nummer = f.Nummer,
Kunde = f.Kunde
}).ToList();
Console.WriteLine("MiniFaktura:");
miniFakturaer.ForEach(mf => Console.WriteLine($"Nummer: {mf.Nummer}, Kunde: {mf.Kunde}"));
// Projektering til anonyme objekter
var objekter = fakturaer.Select(f => new { Nummer = f.Nummer, Kunde = f.Kunde}).ToList();
Console.WriteLine("\nAnonyme objekter:");
objekter.ForEach(t => Console.WriteLine($"Nummer: {t.Nummer}, Kunde: {t.Kunde}"));
// Projektering til navngivne tuples
var tuples = fakturaer.Select(f => (Nummer: f.Nummer, Kunde: f.Kunde)).ToList();
Console.WriteLine("\nNavngivne Tuples:");
tuples.ForEach(t => Console.WriteLine($"Nummer: {t.Nummer}, Kunde: {t.Kunde}"));
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})";
}
}
class MiniFaktura
{
public int Nummer { get; set; }
public string Kunde { get; set; }
}