有什么好的做法可以在 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/