Order By свойство от динамического linq - PullRequest
1 голос
/ 06 апреля 2010

Я использую динамический linq для создания универсального класса для обработки универсального JqGrid из MVC, все отлично работает (поиск, разбиение на страницы и т. Д.), За исключением сортировки по свойствам кода. Сортировка работает нормально, когда я нажимаю на БД для сортировки данных, но как только это свойство будет выполнено, сортировка не работает, например

 public partial class tblStockOrder
{
    public string approved
    {
        get
        {
            return approved_id == null ? "" : "Approved";
        }
    }
}

Я использую следующий Dynamic Linq

        items = items
            .OrderBy(string.Format("{0} {1}", sidx, sord))
            .Skip(pageIndex * pageSize)
            .Take(pageSize);

Где sidx и т. Д. - это строки, передаваемые jquery.

Так что, по сути, это лучшее решение для обработки случая, когда некоторые свойства будут из базы данных, в то время как другие будут свойствами кода (не уверены в правильном именовании). Я могу обработать все это в коде с помощью рефлексии, но, очевидно, хотел бы, чтобы БД выполняла как можно больше операций поиска / сортировки, не извлекая тысячи записей и не сортируя их в коде с помощью рефлексии.

1 Ответ

0 голосов
/ 12 ноября 2012

Вычисленный класс, конечно, не будет работать, так как вы пытаетесь создать запись, которая является частью памяти, частью базы данных.

Однако вы можете вычислить то же самое в базе данных, указав функцию взапрос linq, пример: items = items .OrderBy (x => x.approved_id! = null) .Skip (pageIndex * pageSize) .Take (pageSize);

...