c# - lambda 表达式 : Best practice for AND condition inside Where(TSource) Function

标签 c# if-statement where-clause

有什么好的做法可以在 lambda 表达式中编写 AND 而不是在 Where() 函数中编写以下 IF

lst.Where(obj=> {
  if (obj.Prop1 == true && obj.Prop2 == true)
    return true;
  return false;
          });

最佳答案

任何不写的理由:

lst.Where(obj => obj.Prop1 && obj.Prop2)

?一般而言:

  • 我避免直接​​比较 true 和 false,更喜欢 if (foo) 而不是 if (foo == true)
  • 当您的代码结构为:

    if (condition)
    {
        return true;
    }
    else
    {
        return false;
    }
    

    那么你可以将它替换为:

    return condition;
    

    这在 lambda 表达式中和在其他任何东西中一样真实 - 除了像您这样的 lambda 表达式,这意味着您可以从 statement lambda(主体周围的大括号)移动到 表达式 lambda(没有大括号)。

第二点也超越了 true 和 false,使用条件运算符。我通常会这样转换:

if (condition)
{
    return x;
}
else
{
    return y;
}

return condition ? x : y;

关于c# - lambda 表达式 : Best practice for AND condition inside Where(TSource) Function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4554357/

相关文章:

swift - 当 if/else 条件为 true 时,执行 true 和 false block 中的代码

sql - 如何在SQL Server 2005中使用IF语句?

php检查2个变量是否相等并且都等于0

c# - 我可以等待我用生成器创建的可枚举吗?

java - 如何将字节转换为枚举?

c# - 如何有条件地将参数传递给 func 数组

sql-server-2008 - 一个选择语句中的不同条件

c# - 如何使用 Postsharp 捕捉属性变化?

mysql - 如何过滤 INNER JOIN SQL 命令结果

mysql - 排除列中的某些值