2012-04-23 13 views
60

Ritengo che questo sarà abbastanza banale ma non riesco a capire come farlo. Ho un List<int> e voglio sommare un intervallo dei numeri.Intervallo di somma di int in Elenco <int>

Dire il mio elenco è:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

Come dovrei ottenere la somma dei primi 3 oggetti? Il risultato è 6. Ho provato a utilizzare Enumerable.Range ma non sono riuscito a farlo funzionare, non sono sicuro che sia il modo migliore per farlo.

Senza fare:

int sum = list[0] + list[1] + list[2]; 
+0

Si prega di vedere anche che se si include System.Linq è possibile utilizzare molte altre strutture con la propria collezione: http://msdn.microsoft.com/en-us/library/system.linq.enumerable.aspx –

risposta

99

È possibile effettuare questa operazione utilizzando Take & Sum:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 1 + 2 + 3 
int sum = list.Take(3).Sum(); // Result: 6 

Se si desidera sommare un intervallo che inizia altrove, è possibile utilizzare Skip:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 3 + 4 
int sum = list.Skip(2).Take(2).Sum(); // Result: 7 

oppure , Riordinare l'elenco utilizzando OrderBy o OrderByDescending e poi somma:

var list = new List<int>() 
{ 
    1, 2, 3, 4 
}; 

// 3 + 4 
int sum = list.OrderByDescending(x => x).Take(2).Sum(); // Result: 7 

Come si può vedere, ci sono un certo numero di modi per eseguire questa operazione (o attività correlate). Vedi Take, Sum, Skip, OrderBy & OrderByDescending documentazione per ulteriori informazioni.

+1

Perfetto, grazie James. –

+2

soluzione fantastica:] – Somebody

Problemi correlati