Это сработало для меня.Здесь важно отключить отложенную загрузку, чтобы избежать загрузки всех статей при выполнении итерации по коллекции:
ctx.ContextOptions.LazyLoadingEnabled = false; // assuming you are in EF 4.0
var query = ctx.categories
.Where(c => c.IsPublic)
.Select(c => new {
Category = c,
Articles = c.Articles.Take(5)
}).ToList().Select(x => x.Category);
foreach (var category in query)
{
foreach (var article in category.Articles)
{
// runs only 5 times through this loop
}
}
Редактировать
Если вы не утилизируетеctx
и больше работайте с контекстом после приведенного выше фрагмента кода, возможно, вам лучше снова включить отложенную загрузку ...
ctx.ContextOptions.LazyLoadingEnabled = true;
... прежде чем возникнут проблемы с другими запросами, если ваше приложение в основном полагается наленивая загрузка.