使用Linq的Subsonic 3.0.0.3 SQL分页

Ste*_*eve 3 linq subsonic paging subsonic3

刚从Subsonic 2.2 ActiveRecord更新到3.0.0.3.我正在尝试使用LINQ来执行这样的分页查找查询(我的对象/表称为"存储库"):

Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
    .OrderBy(i => i.DocumentTitle).Skip((currentPage - 1) * itemsPerPage)
    .Take(itemsPerPage);
Run Code Online (Sandbox Code Playgroud)

当我使用SQL Server Profiler查看此查询生成的SQL时,SQL中没有分页,所有分页都在C#的内存中完成.现在,Subsonic查询语言确实有一个很好的GetPaged过程可以正常工作,但我认为LINQ也应该这样做.我在这里错过了什么或者这是LINQ的限制吗?

我知道这个Repository.GetPaged()函数,但是没有足够的参数 - 我需要做一个动态排序,以及一个Find().

Ste*_*eve 5

在进行进一步测试时,此语句正常工作:

(from i in dataContext.Repositories 
 where i.DocumentTitle.Contains(searchTerm) 
 orderby i.DateCreated ascending select i)
 .Skip((currentPage - 1) * itemsPerPage).Take(itemsPerPage);
Run Code Online (Sandbox Code Playgroud)

执行时,上面的linq语句在sql中正确分页.

我可以得出的唯一结论是,当你使用方法链语法时,一旦你在初始的lamda表达式之外

Repository.Find(item => item.DocumentTitle.Contains(searchTerm))
Run Code Online (Sandbox Code Playgroud)

亚音速SQL解释器停止为最终链接的任何方法创建SQL

.OrderBy(i => i.DocumentTitle).Skip(15).Take(10);
Run Code Online (Sandbox Code Playgroud)

或者,我在这里完全做错了什么?有人有一些见解吗?