Мне нужно обсудить работу LINQ и выражения Lambda.
Какой из них лучше?
Ответ 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 исключен, поскольку он избыточен.
Ответ 2
быстрое сравнение в отражателе, вероятно, сделает трюк. Тем не менее, с точки зрения "предпочтения", я нахожу выражения лямбда легче следовать и писать и использовать их по всем направлениям, будь то объекты, xml или что-то еще.
Если производительность пренебрежимо мала, я пойду с тем, который лучше всего подходит вам.
Я действительно начал небольшую тему, рассматривая методы linq, которые могут представлять интерес: