2016-06-28 85 views
2

我有這段代碼。包含的C#lambda限制

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

此代碼返回5個文件夾項目。我想要做的是限制子文件夾5,而不是限制文件夾到5我曾嘗試以下

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

但它似乎並沒有這樣的伎倆。

我可能會錯過這裏的正確語法。

非常感謝你提前!

+0

不知道什麼'GetAllWithInclude'精確返回,有可能是更好的選擇,但在理論上下面應該工作:'返回文件夾GetAllWithInclude(x => x.SubFolder).SelectMany(s => s).Take(5);' –

+0

Hi @ Me.Name但我仍然必須返回完整的文件夾記錄及其5個子文件夾項目。 –

+0

啊對了。如果第一個文件夾包含3個項目和第二個5,它應該返回一個文件夾3和一個文件夾2項目?看起來''GetAllWithInclude'方法更容易實現。這是一種我不知道的自定義方法或一些庫方法嗎? –

回答

2

有沒有方法Include(Where Expression)。如果您使用Include,您將始終加載所有記錄。

更新

您可以使用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