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.