2013-09-16 4 views
14

Я хочу получить сумму значений из списка.C# - Как получить сумму значений из списка?

Например: У меня есть 4 значения в списке 1 2 3 4 Я хочу суммировать эти значения и отображать его в Ярлык

Код:

protected void btnCalculate_Click(object sender, EventArgs e) 
{ 
    string monday; 
    TextBox txtMonTot; 
    List<string> monTotal = new List<string>(); 

    if (Application["mondayValues"] != null) 
    { 
     List<string> monValues = Application["mondayValues"] as List<string>; 
     for (int i = 0; i <= gridActivity.Rows.Count - 1; i++) 
     { 
      GridViewRow row = gridActivity.Rows[i]; 
      txtMonTot = (TextBox)row.FindControl("txtMon"); 
      monday = monValues[i]; 
      monTotal.Add(monday); 
     } 
    } 
} 

Любые идеи? Заранее спасибо

+7

** список.Sum() **. – I4V

+1

Поскольку этот комментарий поддерживается, следует упомянуть, что, как прокомментировали другие, вам нужна ссылка на System.Linq для использования list.Sum(). – OldDog

+0

Возможный дубликат [C# Список объектов, как я могу получить сумму свойства] (https://stackoverflow.com/questions/4351876/c-sharp-list-of-objects-how-do-i-get -the-sum-of-a-property) –

ответ

41

Вы можете использовать функцию Sum, но вы «придется преобразовать строки в целых чисел, например, так:

int total = monValues.Sum(x => Convert.ToInt32(x)); 
+1

Если они должны быть суммированы, почему в первую очередь указаны строки строки? – Abhitalks

+3

Вам, вероятно, не нужна лямбда 'Sum (Convert.ToInt32)' – Sayse

+1

@Sayse Это дает три ошибки для меня. – IllidanS4

6

Вы можете использовать LINQ для этого

var list = new List<int>(); 
var sum = list.Sum(); 

и для списка строк, как Рой Dictus сказал, что вы должны преобразовать

list.Sum(str => Convert.ToInt32(str)); 
9

Использование Sum()

List<string> foo = new List<string>(); 
foo.Add("1"); 
foo.Add("2"); 
foo.Add("3"); 
foo.Add("4"); 

Console.Write(foo.Sum(x => Convert.ToInt32(x))); 

Печать:

+6

Downvoter, пожалуйста, просветите меня – DGibbs

+0

Я как раз собирался спросить то же самое – NDJ

+1

Я действительно не понимаю, почему этот ответ должен быть снижен! Возможно, он прочитал этот вопрос http://meta.stackexchange.com/questions/17204/six-simple-tips-to-get-stack-overflow-reputation-fast и применил правило №. 2 – makim

2

Как насчет этого?

List<string> monValues = Application["mondayValues"] as List<string>; 
int sum = monValues.ConvertAll(Convert.ToInt32).Sum(); 
Смежные вопросы