【问题标题】:list lambda or delegate find first result of expression列出 lambda 或委托查找表达式的第一个结果
【发布时间】:2013-02-23 07:19:40
【问题描述】:

这些代码对于查找表达式的第一个结果是否返回相同的结果?

        bool daily = false;
        lstDep.ForEach(d => daily = d.DailyAmount < transferedAmount ? true : false);
        lstDep.ForEach(delegate(DepositRoleModel d)
        {
            daily = d.DailyAmount < transferedAmount ? true : false;
        }
            );

如何打破 foreach 以获得第一个真实结果?

【问题讨论】:

  • 所以您希望我们为您做这些?
  • 我想比较一下,选择更快更可靠的。
  • @Ahmad:所以想要它 - 然后拿走它并比较。对你来说这听起来不合逻辑吗?
  • @zerkms 我编辑了我的问题,我不想在第一个“true”之后继续 foreach。
  • @Ahmad:你不需要打破它,但你需要使用.Any()。现在您知道了 - 解释 原始 任务总是 是有意义的,而不是仅仅展示一个(错误/损坏的)解决方案希望我们猜你真的 想解决。

标签: c# .net delegates lambda foreach


【解决方案1】:

您不需要“打破 Foreach”,而是使用 .Any()

bool daily = lstDep.Any(d => d.DailyAmount < transferedAmount);

【讨论】:

    【解决方案2】:

    您可以改用这个查询:

    bool daily = lstDep.Any(d=>d.DailyAmount < transferedAmount)
    

    它会比您的查询更快。 这段代码相当于:

    bool daily;
    
    foreach(var d in lstDep)
    {
        daily = d.DailyAmount < transferedAmount;
        if(daily)
            break;
    }
    

    【讨论】:

    • "它会比您的查询更快。" --- 你如何比较不同工作并提供不同结果的解决方案? :-)
    • 你是说这个查询会比他的执行慢吗? :) 当然,该解决方案做了不同的工作,但这项工作正是他想做的。
    • 不,我想说比较苹果和橙子是不可能。确实它做了 OP 想要的,但它与原始问题中的代码无法比较,因为该代码做了不同的工作。
    • :) 我明白你对这个问题想要什么,但我认为 goolge 搜索和 VS 代码分析可以提供帮助!!!谢谢@zerkms :)
    • @Ahmad:我“想要”什么?我想教你如何提出正确的问题并解释无与伦比的事物。但似乎我的目标失败了。
    猜你喜欢
    • 1970-01-01
    • 2010-10-30
    • 2010-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多