【发布时间】:2013-04-29 05:16:40
【问题描述】:
我正在使用带有 Linq 的 C# MVC4。
我为我的项目使用了依赖注入,这导致我拥有一个单独的模型项目以及一个单独的存储库项目(以及一个用于测试等)。这一切都没有问题。
我将查询从控制器(旧样式)移到存储库(新 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 状态之前,我不再有权访问项目的总数,除非我执行两个查询,这意味着两次访问数据库。
解决此问题的最佳方法是什么。
【问题讨论】:
标签: c# asp.net-mvc linq