Ich denke, das wird ziemlich trivial sein, aber ich kann nicht herausfinden, wie es geht. Ich habe eine List<int>
und ich möchte einen Bereich der Zahlen summieren.
Angenommen, meine Liste lautet:
var list = new List<int>()
{
1, 2, 3, 4
};
Wie würde ich die Summe der ersten 3 Objekte erhalten? Das Ergebnis ist 6. Ich habe versucht Enumerable.Range
, es zu verwenden , konnte es aber nicht zum Laufen bringen. Ich bin mir nicht sicher, ob dies der beste Weg ist, dies zu tun.
Ohne zu tun:
int sum = list[0] + list[1] + list[2];
Antworten:
Sie können dies mit
Take
& erreichenSum
:var list = new List<int>() { 1, 2, 3, 4 }; // 1 + 2 + 3 int sum = list.Take(3).Sum(); // Result: 6
Wenn Sie einen Bereich summieren möchten, der an einer anderen Stelle beginnt, können Sie Folgendes verwenden
Skip
:var list = new List<int>() { 1, 2, 3, 4 }; // 3 + 4 int sum = list.Skip(2).Take(2).Sum(); // Result: 7
Oder ordnen Sie Ihre Liste mit
OrderBy
oder neuOrderByDescending
und summieren Sie dann:var list = new List<int>() { 1, 2, 3, 4 }; // 3 + 4 int sum = list.OrderByDescending(x => x).Take(2).Sum(); // Result: 7
Wie Sie sehen können, gibt es verschiedene Möglichkeiten, diese Aufgabe (oder verwandte Aufgaben) auszuführen. Siehe
Take
,Sum
,Skip
,OrderBy
undOrderByDescending
Dokumentation für weitere Informationen.quelle
Oder verwenden Sie einfach Linq
int result = list.Sum();
Um die ersten drei Elemente zusammenzufassen:
int result = list.GetRange(0,3).Sum();
quelle