Есть ли потери в производительности преобразования', где' положение лямбда?


Есть разные по производительности 2 запросы. Мне просто интересно, что лучше из двух:

var res1 = (from a in _ctx.DataContext.Actions
            join e in _ctx.DataContext.Events on a.EventId equals e.EventId                      
            select a).Single(a => a.ActionId == actionId);

или

var res2 = (from a in _ctx.DataContext.Actions
            join e in _ctx.DataContext.Events on a.EventId equals e.EventId
            where a.ActionId == actionId
            select a).Single();


313
3
задан 26 июля 2011 в 03:07 Источник Поделиться
Комментарии
1 ответ

Не должно быть никакой разницы в производительности, что является результатом используемого синтаксиса. Синтаксис запросов-это просто услада для глаз, который преобразуется в один и тот же базовый код. Разница между двумя действительно просто

_ctx.DataContext.Actions
.Join(_ctx.DataContext.Events, blah, blah, blah)
.Single(a=>a.ActionId == actionId);

и

_ctx.DataContext.Actions
.Join(_ctx.DataContext.Events, blah, blah, blah)
.Where(a=>a.ActionId == actionId)
.Single();

Если есть разница в производительности, я бы очень удивился. Единственный способ, чтобы действительно сказать, чтобы запустить некоторые тесты. Я лично предпочитаю второй способ или мой первый, как мне не нравится смешивать синтаксис и явный синтаксис.

5
ответ дан 26 июля 2011 в 03:07 Источник Поделиться