Любая причина не писать:
lst.Where(obj => obj.Prop1 && obj.Prop2)
? В целом:
- Я избегаю прямых сравнений с истинным и ложным, предпочитая от
if (foo)
до if (foo == true)
Когда у вас есть структура кода:
if (condition)
{
return true;
}
else
{
return false;
}
тогда вы можете просто заменить его на:
return condition;
Это так же верно для лямбда-выражений, как и для всего остального - за исключением того, что с такими лямбда-выражениями, как ваше, это означает, что вы можете перейти от оператора lambda (фигурные скобки, окружающие тело) к выражению лямбда (без брекетов).
Вторая точка также выходит за рамки истинного и ложного, используя условный оператор. Я обычно конвертирую это:
if (condition)
{
return x;
}
else
{
return y;
}
до
return condition ? x : y;