运行 linq 总计:将结果放在分页列表中
running total by linq : place results in paged List
我尝试将以下 link 的结果放入分页列表中:
LINQ to SQL and a running total on ordered results
我稍微修改一下代码:
var userDocs = db.Docs.AsQueryable();
Int64 running_total = 0;
var moeen = userDocs.ToList()
.OrderBy(a => a.DocDate)
.Select(a =>
{
running_total += 1;
return new MoeenViewModel
{
Doc = a,
remain = running_total
};
}
);
return View(moeen.ToPagedList(1, 15));
但 'remain' 结果不以 1 开头。它以 8 开头,例如如果 'Docs' 记录计数为 7
为什么??? !!!
如果我 return View(moeen) 结果正常
我发现问题
var userDocs = db.Docs.AsQueryable();
Int64 running_total = 0;
var moeen = userDocs.ToList()
.OrderBy(a => a.DocDate)
.Select(a =>
{
running_total += 1;
return new MoeenViewModel
{
Doc = a,
remain = running_total
};
}
);
moeen = moeen.ToList();
return View(moeen.ToPagedList(1, 15));
在通过 .ToList() 列出 moeen 之前,每次使用 moeen 都会对 running_total 产生副作用。
看这个:
http://www.blackwasp.co.uk/LinqRunningTotal.aspx
if you change the value of the variable that has been closed over before executing the query, the results will be affected.
我尝试将以下 link 的结果放入分页列表中:
LINQ to SQL and a running total on ordered results
我稍微修改一下代码:
var userDocs = db.Docs.AsQueryable();
Int64 running_total = 0;
var moeen = userDocs.ToList()
.OrderBy(a => a.DocDate)
.Select(a =>
{
running_total += 1;
return new MoeenViewModel
{
Doc = a,
remain = running_total
};
}
);
return View(moeen.ToPagedList(1, 15));
但 'remain' 结果不以 1 开头。它以 8 开头,例如如果 'Docs' 记录计数为 7
为什么??? !!!
如果我 return View(moeen) 结果正常
我发现问题
var userDocs = db.Docs.AsQueryable();
Int64 running_total = 0;
var moeen = userDocs.ToList()
.OrderBy(a => a.DocDate)
.Select(a =>
{
running_total += 1;
return new MoeenViewModel
{
Doc = a,
remain = running_total
};
}
);
moeen = moeen.ToList();
return View(moeen.ToPagedList(1, 15));
在通过 .ToList() 列出 moeen 之前,每次使用 moeen 都会对 running_total 产生副作用。
看这个: http://www.blackwasp.co.uk/LinqRunningTotal.aspx
if you change the value of the variable that has been closed over before executing the query, the results will be affected.