Summenbereich der Ints in Liste <int>


70

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];

Bitte beachten Sie auch, dass Sie mit System.Linq viele andere Funktionen in Ihrer Sammlung verwenden können: msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx

Antworten:


119

Sie können dies mit Take& erreichen Sum:

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 OrderByoder neu OrderByDescendingund 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, OrderByund OrderByDescendingDokumentation für weitere Informationen.


Können wir dasselbe auch mit Array machen?
— Harter Jaswal

0

Oder verwenden Sie einfach Linq

int result = list.Sum();

Um die ersten drei Elemente zusammenzufassen:

int result = list.GetRange(0,3).Sum();
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.