gpt4 book ai didi

linq-to-sql - 查询结果不能枚举多次?

转载 作者:行者123 更新时间:2023-12-03 21:09:19 24 4
gpt4 key购买 nike

我正在使用 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。我需要在我的 View 中支持分页,所以我需要知道总页数,这(再次AFAIK)只有在我可以获得所有项目的数量时才有可能。

伙计们,我在这里错过了什么?

最佳答案

你可以做的是添加一个 ToList()调用后repository.FullTextSearch(searchText) .这样,结果是从服务器检索的,之后您可以随心所欲地对它们进行处理(因为它们现在已加载到内存中)。

您现在要做的是两次运行相同的 SQL 查询,这是相当低效的。

关于linq-to-sql - 查询结果不能枚举多次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com