Ich habe gerade von Subsonic 2.2 ActiveRecord auf 3.0.0.3 aktualisiert. Ich versuche, LINQ zu verwenden, um eine seitenweise Suchabfrage wie diese durchzuführen (mein Objekt/Tabelle heißt "Repository"):
Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
.OrderBy(i => i.DocumentTitle).Skip((currentPage - 1) * itemsPerPage)
.Take(itemsPerPage);
Wenn ich mir die von dieser Abfrage mit SQL Server Profiler generierte SQL ansehe, gibt es kein Paging in der SQL, das gesamte Paging wird im Speicher in C# durchgeführt. Die Subsonic-Abfragesprache verfügt über eine nette GetPaged-Prozedur, die richtig funktioniert, aber ich dachte, dass LINQ dies auch tun sollte. Habe ich hier etwas übersehen oder ist dies eine Einschränkung von LINQ?
Ich bin mir bewusst, dass die Repository.GetPaged()
Funktion, aber das hat nicht genug Parameter - ich muss eine dynamische Sortierung durchführen, ebenso wie eine Find()
.