Где, когда и как лучше использовать лямбда-выражения?
Если кратко - то используйте лямбды до тех пор, пока не запутаетесь в них. Как запутаетесь - так и поймете ответ на свой вопрос.
Я использую лямбда-выражения в двух случаях:
- когда это действительно "выражение", т.е. всё вычисление укладывается в одну формулу;
- когда для вычислений нужно использовать значения переменных текущего метода.
При этом я помню, что "под ковром" компилятор создаст для каждого контекста с лямбда-выражением отдельный класс, и захваченные переменные будут полями этого класса (а само лямбда-выражение - его методом). Причём они будут использоваться, как поля, не только для кода, вычисляющего это выражение, но и для всей работы с этими переменными. Так что, если в конкретном месте приходится думать об эффективности, то надо всё взвесить.