【发布时间】:2011-11-09 04:47:52
【问题描述】:
我正在使用 LINQ to SQL 在 Sql server 2008 中获取 FullTextSearch 存储过程的搜索结果。我将该过程从服务器资源管理器拖到设计器中,并获得了使用适当的返回类型和参数创建的方法。现在的问题是,我需要获取调用此方法的结果的计数,因此使用我的存储库方法(它将调用 Sproc 方法并将结果作为 IQueryable 返回)我进行了以下调用。
var result = repository.FullTextSearch(searchText);
int resultsCount = result.Count();
var ret = result.Skip((pageNumber - 1) * PageSize).Take(PageSize).ToList();
此代码每次尝试运行时都会生成一个 InvalidOperationException,异常显示(是的,您猜对了!)“查询结果不能多次枚举。”
为 Sproc 生成的方法返回 ISingleResult,它应该是正常的。 AFAIK。我需要在我的视图上支持分页,所以我需要知道总页数,这(再次是 AFAIK)只有在我可以获得所有项目的计数时才有可能。
我在这里错过了什么,伙计们?
【问题讨论】:
-
显然 Marc Gravell 建议的重构是最好的,一旦我有时间就去做。我接受马克的回答!再次感谢伙计们!
标签: linq-to-sql invalidoperationexception