2016-06-28 7 views
2

Ich habe dieses Stück Code.C# Lambda-Limit mit enthalten

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

Dieser Code gibt 5 Ordnerelemente zurück. Was ich tun möchte, ist Grenze Subfolder bis 5 statt Ordner 5. Begrenzung ich folgende

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

versucht, aber es scheint nicht, den Trick zu tun.

Ich könnte hier die richtige Syntax fehlen.

Vielen Dank im Voraus!

+0

Ohne zu wissen, was 'GetAllWithInclude' genau zurückgibt verwenden können, könnte es bessere Möglichkeiten, aber die folgenden sollte theoretisch funktionieren:' return Ordner .GetAllWithInclude (x => x.SubFolder) .SelectMany (s => s) .Take (5); ' –

+0

Hallo @ Me.Name, aber ich muss immer noch die kompletten Ordner-Datensätze zusammen mit ihren 5 Unterordner-Elementen zurückgeben. –

+0

Ah richtig. Und wenn der erste Ordner 3 Elemente und ein zweiter 5 enthält, sollte er einen Ordner mit 3 und einen Ordner mit 2 Elementen zurückgeben? Es scheint, dass dies in der 'GetAllWithInclude'-Methode einfacher zu implementieren wäre. Ist das eine benutzerdefinierte Methode oder eine Bibliotheksmethode, von der ich nichts weiß? –

Antwort

2

Es gibt keine Methode für Include(Where Expression). Wenn Sie Include verwenden, werden Sie immer alle Datensätze laden.

aktualisieren

Sie Projection für dieses Problem

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

aber wir können immer .Take() verwenden, um zu begrenzen, oder? Ich weiß nicht, wie ich die Rückgabe der Unterklassen einschränken kann. –

+0

@JackFrother Sie können Take() auch nicht für include verwenden – Kahbazi

Verwandte Themen