所以我有这样的事情:
public IQueryable<Teachers> GetTeachers()
{
var query = from a in this.Context.Techers
where a.active == true
select a
return query;
}
然后我称之为:
List<Teachers> = this.repo.GetTeachers().Take(5000).ToList();
让我们稍后在程序中的某个地方说我将这些记录标记为活动为假;
现在如果我再次运行此程序,它应该返回零记录吗?或者它选择&#34;接下来的5000可用&#34;活跃记录?
答案 0 :(得分:2)
您正在使用LINQ to SQL(或LINQ to Entites),因此您的查询将在SQL查询中进行转换,这看起来与此类似:
SELECT TOP 5000 *
FROM techers
WHERE active = true
将返回的内容取决于db。中表的内容。
如果您将前5000条记录标记为非活动状态,则再次运行该记录将返回下一个5000个活动元素(如果表中仍有活动元素)。
答案 1 :(得分:1)
如果将查询具体化为列表,则无法再针对服务器执行该查询。 List对执行查询一无所知。只有保留IQueryable,才能重新执行查询。