我将 C# MVC4 与 Linq 一起使用。
我为我的项目使用了依赖注入,这导致我拥有一个单独的模型项目以及一个单独的存储库项目(以及一个用于测试等)。这一切都没有问题。
我将查询从控制器(旧样式)移到存储库(新 DI 样式)中,然后注入它们。它工作正常。
我有一个标准的 linq 查询(选择任何示例,它们都足够基本),它照常从数据库中返回一组项目。这里也没有问题。
我的问题是,我想实现分页,而且我教它很简单。这是我的步骤:
从存储库中获取 linq 查询的结果(注入到控制器中)将其存储在 var 中。它看起来像:
var results = _someInjectedCode.GetListById(SomeId);
之前,我可以做一些简单的事情,比如:
results.Count()
results.Skip(SomeNum).Take(SomeOtherNum)
但是现在我想要分页,我需要做我的 Skip Take 像这样的事情:
var results = from xyz in _someInjectedCode.GetListById(SomeId).SomeId).Skip(SomeNum).Take(SomeOtherNum)
select new[] {a,id, a.fName, a.lName .....}
这样做的问题是,在列表缩短到 Pre Skip...Take 状态之前,我不再有权访问项目的总数,除非我执行两个查询,这意味着两次访问数据库。
解决此问题的最佳方法是什么。