Ответ 1
Я думаю, вы имеете в виду query expression
, когда речь идет о LINQ здесь.
Они эквивалентны. Компилятор меняет query expression
на эквивалентное выражение Lambda перед его компиляцией, поэтому сгенерированный IL точно такой же.
Пример
var result = select s from intarray
where s < 5
select s + 1;
точно совпадает с
var result = intarray.Where( s => s < 5).Select( s => s+1);
Обратите внимание, что если вы пишете выражение запроса следующим образом:
var result = select s from intarray
where s < 5
select s;
Он преобразуется в:
var result = intarray.Where( s => s < 5);
Последний вызов Select исключен, поскольку он избыточен.