2011-12-23 108 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); 

這應該做到這一點。