2016-06-28 9 views
2

У меня есть эта часть кода.C# лямбда-предел с включением

return Folder.GetAllWithInclude(x => x.SubFolder).Take(5); 

Этот код возвращает 5 элементов папок. То, что я хочу сделать, это предел Subfolder 5 вместо ограничения папки до 5. Я попытался следующий

return Folder.GetAllWithInclude(x => x.SubFolder.Take(5)); 

но это, кажется, не сделать трюк.

Возможно, у меня отсутствует соответствующий синтаксис.

Большое вам спасибо!

+0

Не зная, что 'GetAllWithInclude' возвращает точно, может быть лучше варианты, но в теории должно работать:' возвратный папку .GetAllWithInclude (x => x.SubFolder) .SelectMany (s => s) .Take (5); ' –

+0

Привет @ Me.Name, но мне все равно придется возвращать полные записи папок вместе с его 5 элементами подпапки. –

+0

Ах, правильно. И если первая папка содержит 3 элемента и вторую 5, она должна вернуть папку с 3 и папку с двумя элементами? Казалось бы, это будет проще реализовать в методе GetAllWithInclude. Это нестандартный метод или какой-либо библиотечный метод, о котором я не знаю? –

ответ

2

Нет способа для Include(Where Expression). Если вы используете Include, вы всегда будете загружать все записи.

Update

вы можете использовать Projection для этой проблемы

Folder.Select(F => new 
     { 
      FolderName = F.FolderName, 
      SubFolders = F.SubFolders.Take(5) 
     }).ToList().Select(F => new Folder() 
     { 
      FolderName = F.FolderName, 
      SubFolders = F.SubFolders 
     }; 
+0

, но мы всегда можем использовать .Take(), чтобы ограничить право? Я не знаю, как ограничить возврат подклассов. –

+0

@JackFrother, вы не можете использовать Take() для включения либо – Kahbazi

 Смежные вопросы

  • Нет связанных вопросов^_^