Что вы можете сделать, это:
public static IEnumerable<IQueryable<T>> InBatches(
this IQueryable<T> collection, int size)
{
int totalSize = collection.Count();
for (int start = 0; start < totalSize; start += size)
{
yield return collection.Skip(start).Take(size);
}
}
Этот метод расширения позволяет вам делать дополнительные фильтры по возвращаемым IQueryables. Однако полезность довольно ограничена. Я не могу придумать ни одного хорошего сценария для этого :-). В большинстве сценариев вы просто хотите транслировать результаты, и возвращение IEnumerable<IEnumerable<T>>
будет работать нормально, и даже лучше, поскольку это приведет к одному SQL-запросу, а показанный подход приведет к N + 1 запросам.