я следующее:IQueryable и граф
IQueryable<ViewAccountEntry> viewAccountEntries = db.AccountEntries
.Where(x => x.DEntryID == 0)
.Select(x => new ViewAccountEntry()
{
AccountEntry = x,
DAccountEntries = db.AccountEntries
.Where(y => y.DEntryID == 0
&& y.Amount == -x.Amount
&& y.DateEntry == x.DateEntry)
.ToList()
});
Pages = new PageInfo(viewAccountEntries.Count(), page);
ViewAccountEntries = viewAccountEntries
.OrderBy(x => x.AccountEntry.DateEntry)
.Skip(Pages.ItemsSkipped)
.Take(Pages.ItemsPerPage)
.ToList();
Внутри первого Select()
объект создается, содержащий второй список.
Когда выполняется .Count()
, выполняется ли его выборка Select
? Или он рассчитывает разумно, зная, что ему не нужно выполнять либо Select
?
Запишите фактический выполняемый SQL (и профиль базы данных, если только это не дает вам ответа) и узнайте сами. – Servy
Не знаю, как это сделать. – CapIsland
Теперь самое время учиться. Вы должны проверять SQL большинства запросов LINQ, которые вы когда-либо пишете (по крайней мере, на каких-либо сложных), чтобы проверить вашу работу и убедиться, что ничего скрытного не происходит за кулисами. Что касается того, как это будет зависеть от поставщика запросов, но каждый из них будет раскрывать способы его регистрации. То же самое можно сказать о проверке подробного плана выполнения запроса на конец базы данных; найдите свою конкретную базу данных. – Servy