Поэтому у меня есть что-то вроде этого:
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();
Скажем, где-то позже в программе я отмечаю, что эти записи активны для false;
Теперь, если я снова запустил эту программу, должен ли она вернуть нулевые записи? или он выбирает "следующие 5000 доступных" активных записей?
Вы используете LINQ to SQL (или LINQ to Entites), поэтому ваш запрос преобразуется в SQL-запросе, который будет выглядеть примерно так:
SELECT TOP 5000 *
FROM techers
WHERE active = true
То, что будет возвращено, зависит от содержания вашей таблицы в db.
Если вы отметили первые 5000 записей как неактивные, запустите его снова, вернет следующие 5000 активных элементов (если в вашей таблице все еще есть активные элементы).
Если вы внесли материализацию запроса в список, его нельзя выполнить снова с сервером. Список ничего не знает о выполнении запросов. Только если вы поддерживаете IQueryable, вы можете повторно выполнить запрос.