【问题标题】:Paging with Find using Active Record使用 Active Record 进行分页查找
【发布时间】:2010-05-10 01:05:24
【问题描述】:

我似乎找不到这个问题的答案,也找不到一个很好的例子来说明如何完成我想做的事情。我确定它已在某处发布或解释过,但我无法找到我需要的确切解决方案。

我在 Subsonic 3.0.0.4 中使用 ActiveRecord。当我做类似的事情时

recordset = VehicleModel.Find(x => x.Model.StartsWith(SearchText));

我返回一个 VehicleModel 对象的 IList(或更简单地说是一个记录集),这很好,直到我返回太多记录。我也无法订购返回的记录集(我的网格会很好,但如果我有太多记录,我相信它会太慢)。由于 Find 正在返回一个 IList,因此我无法直接针对它运行(同样我可能忽略了一些简单的事情,所以请不要杀了我)。

我的问题是有人可以解释如何像我上面那样查找数据,对其进行排序并获取页面大小为 n 的数据页面吗?

我做错了吗?我是否已经接近正确的轨道了?

【问题讨论】:

    标签: subsonic3 subsonic-active-record


    【解决方案1】:
    int currentPage = x
    int pageSize = n
    recordset = VehicleModel.Find(x => x.Model.StartsWith(SearchText)).Skip(currentPage x PageSize).Take(PageSize);
    

    这是假设 currentPage 从 0 开始。
    如果您的 currentPage 从 1 开始,那么它的 Skip((currentPage - 1) x PageSize)

    【讨论】:

    • 当我输入 .在 SearchText 之后))我没有得到 Skip 作为选项,并且当我编译时出现错误(错误 1 ​​'System.Collections.Generic.IList' 不包含 'Skip' 的定义并且没有扩展名可以找到接受“System.Collections.Generic.IList”类型的第一个参数的方法“Skip”(您是否缺少 using 指令或程序集引用?)。正如我在最初的问题中提到的 Find is返回一个 IList,也许我正在使用的 ActiveRecord.tt 文件较旧,或者我可能缺少其他东西?
    • 我是个白痴。我错过了使用 System.Linq;感谢您帮助我意识到我需要更多的睡眠和更少的咖啡。
    • 现在再次查看代码,我很确定您可以改用 subsonic GetPaged 方法。
    猜你喜欢
    • 2012-06-05
    • 2013-02-27
    • 2011-10-22
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 2013-05-14
    相关资源
    最近更新 更多