Преобразовать для цикла с помощью лямбда (C # 3.0) - PullRequest
2 голосов
/ 06 мая 2010

Как конвертировать следующий код

double sumxy = 0;

for (int i = 0; i < x.Count; i++)
{sumxy = sumxy + (x[i] * y[i]);}

с помощью лямбды

Я использую C # 3.0. x и y - список двойных чисел

Спасибо

Ответы [ 3 ]

7 голосов
/ 06 мая 2010

Если вы используете .NET 4, вы можете использовать оператор Zip:

double sumxy = x.Zip(y, (a, b) => a * b).Sum();

Или в .NET 3.5:

double sumxy = x.Select((value, index) => value * y[index]).Sum();
3 голосов
/ 06 мая 2010

Нет никакого смысла, но если вы хотите:

Enumerable.Range(0, x.Count).Select(i => x[i] * y[i]).Sum();
0 голосов
/ 06 мая 2010

Как то так ...

var sumy = Enumerable.Range(0, x.Count).Aggregate((result, i) => result + (x[i]*y[i]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...