2016-03-09 4 views
-3

Как написать цикл foreach, показанный ниже как выражение labmda?Как написать цикл foreach для суммирования элементов в выражении lamba?

var sum = 0; 
foreach (SomeClass obj in SomeListOfClass) 
{ 
    sum += obj.SomeValue; 
} 

Я ожидаю лямбда-выражения, которые выглядят как этот

var sum = SomeListOfClass.ForEachMethod(x => sum += x.SomeValue) 

Есть ли способ сделать это?

+3

Вы могли бы просто использовать метод расширения Linq в '' Sum' вар сумма = SomeListOfClass.Sum (х => x.SomeValue); ' – juharr

+0

Это может помогите вам: [http://stackoverflow.com/questions/858978/lambda-expression-using-foreach-clause](http://stackoverflow.com/questions/858978/lambda-expression-using-foreach-clause) –

+0

Почему так много downvotes? Что именно не так с вопросом. Не понял? – talaa123

ответ

2

Использование Linq:

using System.Linq; 

var sum = list.Sum(x => x.SomeValue); 
2

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

SomeListOfClass.Sum(c => c.Property); 

Это, однако, является лишь частным случаем Aggregate. Если вам нужно больше усложнять агрегацию вашего списка, вы должны использовать это.
Вот пример, который суммирует значения целых чисел:

var ints = new List<int>() { 1, 2, 3 }; 
var x = ints.Aggregate((start, current) => start + current);