我想找到的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代替?
我想找到的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代替?
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)
這只是偶然正確的,因爲你應該使用'.Range(0,1000)'。參數對應於'start'和'count'而不是'start'和'end'。 – 2011-12-23 19:27:42
@JohnGietzen - 感謝您的糾正。 – Oded 2011-12-23 19:28:22
result = Enumerable
.Range(0, 1000)
.Sum(i => (i % 3 == 0) || (i % 5 == 0) ? i : 0);
這應該做到這一點。
(I =>則i%3 == 0 ||則i%5 == 0)? – 2011-12-23 19:23:35
這裏是另一個速度打字比賽:) – dasblinkenlight 2011-12-23 19:25:12
聽起來像另一個家庭作業給我..LOL – MethodMan 2011-12-23 19:33:34