将for循环转换为lambda

时间:2011-12-23 19:20:04

标签: c# lambda

我想找到1000或以下3或5的所有倍数的总和。

我传统的for循环方式是

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

如何使用lambda代替?

2 个答案:

答案 0 :(得分: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 :(得分:2)

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

这应该这样做。