Die erste Antwort ist gut. Zum Beispiel haben Sie Klasse:
public class Details
{
public int Level { get; set; }
public int Sal { get; set; }
}
und Sie haben Daten:
var data = new List<Details>()
{
new Details() {Level = 1, Sal = 1},
new Details() {Level = 1, Sal = 1},
new Details() {Level = 1, Sal = 1},
new Details() {Level = 2, Sal = 2},
new Details() {Level = 2, Sal = 2},
new Details() {Level = 3, Sal = 3},
new Details() {Level = 3, Sal = 3},
new Details() {Level = 3, Sal = 3},
};
wenn wir berechnen, erhalten wir:
- Ebene (1) = 3
- Ebene (2) = 4
- Füllstand (3) = 9
Lösung ein (gut):
var sum = data.GroupBy(x => x.Level).ToDictionary(x => x.Key, a => a.Sum(b => b.Sal));
Console.WriteLine(sum[1]); // result 3
Console.WriteLine(sum[2]); // result 4
Console.WriteLine(sum[3]); // result 9
Lösung zwei (nicht sehr gut):
public int GetSumOfLevel(int level, List<Details> details)
{
return details.Where(x => x.Level == level).Sum(x => x.Sal);
}
...
Console.WriteLine(GetSumOfLevel(1, data)); // result 3
Console.WriteLine(GetSumOfLevel(2, data)); // result 4
Console.WriteLine(GetSumOfLevel(3, data)); // result 9
die erste Option wählen sein kann?
@CuongLe Ich habe deinen Schnitt zurückgerollt, weil ich denke, dass er Schaden verursacht hat! 'group.Sum()' konnte nicht funktionieren, wenn 'group' eine Aufzählung von Mitarbeitern anstelle von int war. –
Ok, dann sehe meine Antwort, das wollte ich ändern –
@CuongLe Ich dachte schon, aber du hast das Lambda in der 'Sum' vergessen. Kein Problem, gebe dir +1. Ich frage mich, ob es einen Leistungsunterschied geben würde. –