lambda表达式:Where(TSource)函数中AND条件的最佳实践

Ram*_*eef 1 c# if-statement where

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

lst.Where(obj=> {
  if (obj.Prop1 == true && obj.Prop2 == true)
    return true;
  return false;
          });
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

任何不写的理由:

lst.Where(obj => obj.Prop1 && obj.Prop2)
Run Code Online (Sandbox Code Playgroud)

?一般来说:

  • 我避免真假直接比较,宁愿if (foo)if (foo == true)
  • 当你有一个代码结构:

    if (condition)
    {
        return true;
    }
    else
    {
        return false;
    }
    
    Run Code Online (Sandbox Code Playgroud)

    然后你可以用以下代替它:

    return condition;
    
    Run Code Online (Sandbox Code Playgroud)

    在lambda表达式中和其他任何东西一样真实 - 除了像你的lambda表达式之外,它意味着你可以从语句lambda(围绕正文的大括号)移动到表达式lambda(没有大括号).

使用条件运算符,第二点也超出了true和false.我通常会将此转换为:

if (condition)
{
    return x;
}
else
{
    return y;
}
Run Code Online (Sandbox Code Playgroud)

return condition ? x : y;
Run Code Online (Sandbox Code Playgroud)