Guten Tag,
ich habe in meiner Liste mehrere Properties, darunter StaticPreis (Brutto).
Wenn ich nun mehrere items in der Liste habe mit StaticPreis = 139,02 134,23, 24,14
Möchte ich, die Summe von allen items.StaticPreis haben. Diese müssen vorher aber durch 1.19 geteilt werden (eben netto).
Folgendes habe ich versucht:
double ges_netto = itemList.Sum(item => item.StaticPreis / 1.19);
Wie kann ich, bevor die Summe errechnet wird, jedes einzelne Item durch 1.19 teilen und erst dann die Summe errechnen ?
Hallo,
Folgendes habe ich versucht:
double ges_netto = itemList.Sum(item => item.StaticPreis / 1.19);
Das müsste doch funktionieren.
Aber eigentlich müsste es doch reichen, die Summe zu teilen:
double ges_netto = itemList.Sum(item => item.StaticPreis) / 1.19;
ansonsten, falls Du die Einzel-Nettopreise brauchst:
var nettoPreise = itemList.Select(item => item.StaticPreis / 1.19);
double ges_netto =nettoPreise.Sum();
Aber ob das einen Vorteil gegenüber Deinem Code bringt...
Es gäbe noch die Möglichkeit, ein Dictionary zu erzeugen, um die einzelnen Nettopreise den Positionen zuzuordnen:
var nettoDict = itemList.ToDictionary(item => item, item => item.StaticPreis / 1.19);
var double ges_netto = dict.Values.Sum();
// dann kannst Du den Einzelnettopreis auch abfragen über
var itemNetto = nettoDict[item];
Elegant wäre auch eine Erweiterungsmethode für den Nettopreis, die könntest Du überall verwenden, wo Du eben den Nettopreis benötigst:
public static double NettoPreis(this ItemType item)
{
return item.StaticPreis / 1.19;
}
// Aufruf für Dein Beispiel:
itemList.Sum(item => item.NettoPreis())
(Code nur runtergetippt, nicht getestet)
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Danke für die Ideen,
Ich habe das Problem erst mal mit ner weiteren Liste behoben:
List<double> netto_items = new List<double>();
foreach(Zahlungsliste item in itemList)
{
netto_items.Add(item.StaticPreis / 1.19);
}
double ges_netto = netto_items.Sum();
Aber ob das effektiver ist, weiß ich leider nicht.
Du benötigst keine zweite Liste.
Folgendes habe ich versucht:
double ges_netto = itemList.Sum(item => item.StaticPreis / 1.19);
Das funktioniert einwandfrei, schaue bitte warum es bei dir nicht funktioniert.
class Item
{
public double BruttoPreis { get; }
public Item(double bruttoPreis)
{
BruttoPreis = bruttoPreis;
}
}
static void Main(string[] args)
{
var list = new List<Item>
{
new Item(100),
new Item(200)
};
Console.WriteLine(list.Sum(item => item.BruttoPreis / 1.19));
Console.ReadLine();
}
EDIT sagt noch, solltest du tatsächlich nur den Netto-Preis der Summe benötigen -> teile am Ende die Summe der Bruttopreise durch 1,19; so wie von MarsStein vorgeschlagen. Spart ein paar Berechnungen. 😁
Oh okay, dann funktioniert es wohl doch und ich habe mich vorhin nur verguckt oder ähnliches.
Habe eben auch noch mal beide Varianten getestet und bekam dasselbe Ergebnis ^^