Нужна сумма из многомерного массива с помощью LINQ - PullRequest
2 голосов
/ 18 октября 2011

У меня есть следующий код:

var ccdata = dict1.Select(i => 
                          new object[] { i.Key, Int32.Parse(i.Value) }
                         ).ToArray();

Мне нужно получить сумму всех i.Value. Обратите внимание, что это массив многомерных объектов. i.Key - это строковое значение, а i.Value - значение типа int, которое необходимо суммировать.

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 18 октября 2011
dic.Sum(i => Int32.Parse(i.Value)); // if i.Value is string instead of just int

dic.Sum(i => i.Value); // if string

или

ccdata.Sum(i => (int)i[1]); // if i[1] is object instead of just int

ccdata.Sum(i => i[1]); // if int
2 голосов
/ 18 октября 2011

Непонятно, почему вы делаете это именно так, но их довольно просто суммировать ...

int sum = ccdata.Sum(x => (int) x[1]);

Было бы яснее и эффективнее, если бы вы использовали:

var ccdata = dict1.Select(i => new { i.Key, Value = Int32.Parse(i.Value) })
                  .ToArray();

Таким образом, вы получите безопасность во время компиляции и без бокса:

int sum = ccdata.Sum(x => x.Value);

(Я предполагаю, что вы действительно хотите ccdata по какой-то другой причине. В противном случае, используйте решение Абатищева и вообще избавьтесь от существующего кода.)

1 голос
/ 18 октября 2011

i.Value находится на второй позиции в вашем внутреннем массиве. Так и должно быть:

var sum = cdata.Sum(arr => (int)arr[1]);
...