лямбда-выражение: передовая практика для условия AND внутри функции Where (TSource) - PullRequest
1 голос
/ 29 декабря 2010

Есть ли полезная практика для написания AND в лямбда-выражении вместо записи следующего IF внутри функции Where ()

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

1 Ответ

7 голосов
/ 29 декабря 2010

Любая причина не писать:

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;
...