Вам не нужно лямбда-выражение в предложении «где» - перевод выражения запроса сделает это за вас. Просто используйте:
var result = from rangeVariable in DataSource
where Foo.MethodReturnsBoolean(rangeVariable) == true
select rangeVariable;
Я бы тогда лично удалил избыточность "== true" (я знаю, что это был только пример кода, но ...):
var result = from rangeVariable in DataSource
where Foo.MethodReturnsBoolean(rangeVariable)
select rangeVariable;
Тогда я бы подумал, что использование выражения запроса на самом деле покупает вас. Если вы просто делаете «где» (или просто «выбираете»), вы можете найти точечную запись проще:
var result = DataSource.Where(x => Foo.MethodReturnsBoolean(x));
Это становится еще лучше: компилятору не нужно выводить возвращаемое значение из лямбда-выражения (потому что оно всегда будет bool
), поэтому вы можете просто использовать преобразование группы методов:
var result = DataSource.Where(Foo.MethodReturnsBoolean);
Насколько это чище? :)