В настоящее время я создаю простой сайт ASP.NET MVC, используя Linq to Entities. Моим первым набегом в этот мир был обед для ботаников, в котором я нашел постраничный код списка, который я пытаюсь использовать. Код выглядит следующим образом:
public class PaginatedList<T> : List<T>
{
public int PageIndex { get; private set; }
public int PageSize { get; private set; }
public int TotalCount { get; private set; }
public int TotalPages { get; private set; }
public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize)
{
PageIndex = pageIndex;
PageSize = pageSize;
TotalCount = source.Count();
TotalPages = (int)Math.Ceiling(TotalCount / (double)PageSize);
this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize));
}
public bool HasPreviousPage
{
get
{
return (PageIndex > 0);
}
}
public bool HasNextPage
{
get
{
return (PageIndex + 1 < TotalPages);
}
}
}
Проблема в том, что я использую платформу сущностей, и приведенный выше код выдает следующую ошибку:
Метод «Пропустить» поддерживается только для отсортированного ввода в LINQ to Entities. Метод 'OrderBy' должен быть вызван перед методом 'Пропустить'.
Не зная все входы и выходы Linq, я не уверен, как добавить в предложение orderby, когда не знаю, какие имена столбцов будут в вышеприведенном методе, что с ним является общим.
Спасибо!