【问题标题】:Converting a for loop to lambda将 for 循环转换为 lambda
【发布时间】:2011-12-23 19:20:03
【问题描述】:

我想求1000以下所有3或5的倍数之和。

我传统的for循环方式是

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

我怎样才能改用 lambda 来做到这一点?

【问题讨论】:

  • (i => i % 3 == 0 || i % 5 == 0)?
  • 又一场速度打字比赛又来了:)
  • 听起来像是我的另一个家庭作业..LOL

标签: c# lambda


【解决方案1】:
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)。参数对应startcount而不是startend
【解决方案2】:
result = Enumerable
            .Range(0, 1000)
            .Sum(i => (i % 3 == 0) || (i % 5 == 0) ? i : 0);

应该这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    • 2012-10-13
    • 2015-12-03
    • 2021-03-12
    • 2018-02-22
    相关资源
    最近更新 更多