C# 3.0 使用lambda(C#3.0)对循环进行转换

C# 3.0 使用lambda(C#3.0)对循环进行转换,c#-3.0,C# 3.0,如何转换下面的代码 double sumxy = 0; for (int i = 0; i < x.Count; i++) {sumxy = sumxy + (x[i] * y[i]);} double sumxy=0; 对于(int i=0;i

如何转换下面的代码

double sumxy = 0;

for (int i = 0; i < x.Count; i++)
{sumxy = sumxy + (x[i] * y[i]);}
double sumxy=0;
对于(int i=0;i
通过使用lambda

我正在使用C#3.0。x和y是双数的列表


谢谢

真的没有什么意义,但是如果你想:

Enumerable.Range(0, x.Count).Select(i => x[i] * y[i]).Sum();

如果您使用的是.NET 4,则可以使用运算符:

double sumxy = x.Zip(y, (a, b) => a * b).Sum();
或在.NET 3.5中:

double sumxy = x.Select((value, index) => value * y[index]).Sum();
像这样的

var sumy = Enumerable.Range(0, x.Count).Aggregate((result, i) => result + (x[i]*y[i]);

你为什么要在这里用lambda?@Lucero,因为它太酷了!每个人都在谈论lambda!这可能是解决一切问题的方法/sarcasm@Andrey,rililight。。。我可能很守旧,但我认为LINQ和相关的东西被过度使用了。更不用说其中隐藏的警告了,比如大多数(但不是全部)LINQ操作的延迟执行等等,我觉得这对于许多其他开发人员来说是很难理解的。。。。因为他们不知道自己在做什么