这是我的代码
searchDataContext db = new searchDataContext();
var query = (from p in db.SearchFirst(city, area)
select new
{
ID = p.Id,
Address = p.address,
Level = p.agahilevel
});
int count =query.Count();
// records
var q = query.Skip(Convert.ToInt32(start)).Take(Convert.ToInt32(width));
if (q.Count() > 0)
{
int index = 0;
str += "[";
foreach (var row in q)
{
if (index == 0)
我在此代码中有错误
The query results cannot be enumerated more than once.
请检查并回答我。
答案 0 :(得分:10)
您不能使用缓存查询并多次迭代它们。
制作List<T>
并再试一次
var q = query.ToList(); // work on this
答案 1 :(得分:8)
实现您的查询:
var addresses = (from p in db.SearchFirst(city, area)
select new
{
ID = p.Id,
Address = p.address,
Level = p.agahilevel
})
.Skip(Convert.ToInt32(start))
.Take(Convert.ToInt32(width))
.ToList();
然后使用Enumerable.Any
检查它是否包含元素:
if(addresses.Any())
{
int index = 0; // ...
}
答案 2 :(得分:5)
如果您在查询中添加.ToList()
,问题将得到解决