0

我想做以下

var totalNoOfRows = result.First().TotalNumberOfCount;

最后做这样的事情

bookssList.AddRange(retResult.Select(r => r.ToBook()));

ToBook 是扩展方法

但我总是得到一个查询的结果不能多​​次枚举。

if (result != null)
                            {

    var totalNoOfRows = result.First().TotalNumberOfCount;
                                pagingContext.ItemsTotal = totalNoOfRows != null ? int.Parse(totalNoOfRows.ToString()) : 0;
                                var retResult = result.ToList();
                               // pagingContext.ItemsTotal = totalcount.Value != null ? int.Parse(totalcount.Value.ToString()) : 0;
                                                                    bookssList.AddRange(retResult.Select(r => r.ToBook()));
                            }
4

2 回答 2

2

很难猜出你在做什么,以及这些片段是如何相互关联的,但是如果你只能枚举一个集合一次,那么ToArray首先调用:

var resultCopy = result.ToArray();

//... any number of operations on resultCopy

请注意,调用First也算作枚举。因此,您甚至需要在此之前枚举和复制集合。

于 2013-08-04T18:01:35.333 回答
0

尝试将代码更改为此,因此您只枚举result一次:

var retResult = result.ToList();
var totalNoOfRows = retResult.First().TotalNumberOfCount;  //You are now using LINQ on the list, not the query!
pagingContext.ItemsTotal = totalNoOfRows != null ? int.Parse(totalNoOfRows.ToString()) : 0;
                               // pagingContext.ItemsTotal = totalcount.Value != null ? int.Parse(totalcount.Value.ToString()) : 0;
Logger.LogInfo("Search Payments GetPaymentsWithCount stored procedure result not null and count=" + totalcount);
bookssList.AddRange(retResult.Select(r => r.ToBook()));
于 2013-08-04T18:09:05.923 回答