Да, почему нет ?! Ведь это функция, просто анонимная!
Пример:
x => { int y = x + 1; return x + y; }
Или альтернативно:
delegate(int x) {
int y = x + 1;
return x + y;
}
Таким образом, ваш код может быть записан как:
... = linq.Where(e => {
var count = (from p in db.Orders where p.EnquiryId == e.Id select p).Count();
return x <= count && count <= y;
});
ОБНОВЛЕНИЕ: Чтобы прояснить ситуацию с комментарием, важно знать разницу между анонимными методами и лямбда-выражениями. Анонимный метод похож на обычный метод без явного имени. Когда вы его компилируете, компилятор генерирует для вас обычный метод со странным именем, поэтому у него не будет никаких особых ограничений. Однако одно представление анонимного метода - это лямбда-выражение. Лямбда-выражения можно интерпретировать несколькими способами. Первый делегат. Таким образом, они равны анонимному методу. Второе - это дерево выражений. Этот способ обычно используется LINQ to SQL и некоторыми другими поставщиками LINQ. Они не выполняют ваше выражение напрямую любым способом. Они анализируют его как дерево выражений и используют дерево в качестве входных данных, чтобы сгенерировать эквивалентный оператор SQL для запуска на сервере. Он не выполняется как метод и не считается анонимным методом. В этом случае вы не можете определить локальную переменную, поскольку невозможно проанализировать лямбду как дерево выражений.