我想找到的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