2011-12-23 74 views
-4

我想找到的3所有倍数低于1000转换for循环拉姆达

我的传统的for循环方式的总和或5

for(int i=0;i<1000;i++) 
{ 
    if ((i % 3 == 0) || (i % 5 == 0)) 
    { 
     result += i; 
    } 
} 
Console.WriteLine(result); 

我怎么可以这样使用lambda代替?

+0

(I =>则i%3 == 0 ||则i%5 == 0)? – 2011-12-23 19:23:35

+7

这里是另一个速度打字比赛:) – dasblinkenlight 2011-12-23 19:25:12

+2

听起来像另一个家庭作业给我..LOL – MethodMan 2011-12-23 19:33:34

回答

8
Enumerable.Range(0, 1000).Where(i => i % 3 == 0 || i % 5 == 0).Sum() 

或者

Enumerable.Range(0, 1000).Sum(i => i % 3 == 0 || i % 5 == 0 ? i : 0) 
+1

这只是偶然正确的,因为你应该使用'.Range(0,1000)'。参数对应于'start'和'count'而不是'start'和'end'。 – 2011-12-23 19:27:42

+0

@JohnGietzen - 感谢您的纠正。 – Oded 2011-12-23 19:28:22

2
result = Enumerable 
      .Range(0, 1000) 
      .Sum(i => (i % 3 == 0) || (i % 5 == 0) ? i : 0); 

这应该做到这一点。