Я работаю над существующим проектом, который использует asp.net webapi, я новичок в Linq, и вся команда, написавшая код проекта, ушла.динамическая сортировка для функции выражения linq
У меня есть Funtion в Web API controlller так:
public IQueryable<AccessTypeDTO> GetAccessTypes(int pageIndex = 1, int pageSize = 25)
{
var model = db.AccessTypes.AsQueryable();
return model.Select(AccessTypeDTO.SELECT).Take(pageSize);
}
В AccessTypeDTO
с нашей точки зрения модели и у нас есть модель предметной области базируется EF
AccessType
DM выглядит следующим образом:
public partial class AccessType
{
public int AccessTypeID { get; set; }
public string AccessTypeName { get; set; }
}
Отображение и получение данных для AccessTypeDTO
VM следующим образом
public class AccessTypeDTO
{
public int AccessTypeID { get; set; }
public string AccessTypeName { get; set; }
public static System.Linq.Expressions.Expression<Func<AccessType, AccessTypeDTO>> SELECT =
x => new AccessTypeDTO
{
AccessTypeID = x.AccessTypeID,
AccessTypeName = x.AccessTypeName
};
}
Моя новая задача по реализации пейджинга и порядку результатов, поэтому мой веб-функция API должна выглядеть следующим образом:
public IQueryable<AccessTypeDTO> GetAccessTypes(int pageIndex = 1, int pageSize = 25, string orderBy = "AccessTypeID")
{
var collection= db.AccessTypes.AsQueryable();
return collection.Select(AccessTypeDTO.SELECT).Skip((pageIndex - 1) * pageSize).Take(pageSize);
}
Основная проблема заключается в функции Я здание, что функция Skip требует, чтобы сбор «сбор» был отсортирован перед пропуском. Итак, как я могу сортировать эту коллекцию? Обратите внимание, что у меня есть более ста контроллеров, которые необходимо обновить, и у вас есть подкачка и сортировка подобным образом, и у меня нет времени писать службу для каждого контроллера и записывать переключатель для каждого столбца, чтобы сортировать
спасибо дорогой. Я думаю, что пропуск должен быть: .Skip ((pageIndex - 1) * pageSize) .Take (pageSize); Как я могу сделать заказ по полю? – Mohammad