Я должен запросить все строки в одной таблице. За один раз запрос слишком длинный, я получаю таймаут. Поэтому я хочу запустить этот запрос в нескольких партиях, используя разбивку на страницы. Но делать size
и take
orderby не требуется. И в этом проблема, как сделать заказ родовым (возможно, на первичном ключе)? Или есть способ без заказа?Сущность родовое разбиение на страницы
public async Task<IEnumerable<T>> GetListBatchLoadingAsync<T>(Expression<Func<T, bool>> iWhere = null, long iSize) where T : class, IEntity
{
IQueryable<T> theQueryable = RepositoryDBContext.Set<T>();
//Where clause
if (iWhere != null)
theQueryable = theQueryable.Where(iWhere);
//batch loading
Int64 entitiesCount = await theQueryable.CountAsync();
int totalPage = (int)Math.Ceiling(decimal.Divide(entitiesCount, iSize));
//query
var result = new List<T>();
for (int a = 0; a < totalPage; a++)
result.AddRange(await theQueryable.OrderBy(x=>x. ????).Skip(TAKECOUNT * (a)).Take(TAKECOUNT).ToListAsync());
return result;
}
спасибо за ответ. Но моя самая большая проблема заключается в том, чтобы задать порядок выбора ключа в общем виде. – Julian50