Daeamon
@Daeamon

Как сократить запись Dynamic LINQ Order BY?

Func<Article, Object> orderByFunc = null;
            switch (OrderBy)
            {
                case "AuthorID":
                    orderByFunc = ob => ob.AuthorID;
                    break;
                case "Created":
                    orderByFunc = ob => ob.Created;
                    break;
                case "Title":
                    orderByFunc = ob => ob.Title;
                    break;
                default:
                case "ID":
                    orderByFunc = ob => ob.ID;
                    break;
            }

            List<Article> ArticlesList = new List<Article>();
            switch (OrderWay)
            {
                default:
                case "DESC":
                    ArticlesList = getDB().Article.OrderByDescending(orderByFunc).Skip(Page * Limit).Take(Limit).ToList();
                    break;
                case "ASC":
                    ArticlesList = getDB().Article.OrderBy(orderByFunc).Skip(Page * Limit).Take(Limit).ToList();
                    break;
            }


Есть такой код, можно ли как то сократить switch-и в пару строк?(Не писать каждый раз "orderByFunc = ob => ob.НазваниеПоля", а написать один раз orderByFunc = какаяТоНеведомаяФункцияДляПолученияПоляИзЛюбогоКласса(OrderBy)) Переменная "OrderBy" всегда соответствует названию поля для сортировки.
  • Вопрос задан
  • 235 просмотров
Решения вопроса 1
andrewpianykh
@andrewpianykh
Func<Article, object> orderByFunc = (a) => 
   typeof(Article).GetProperty(OrderBy).GetValue(a);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Аппекс Москва
от 100 000 до 220 000 руб.
ИнтелКон Москва
от 160 000 до 180 000 руб.
OTC.RU Ростов-на-Дону
от 90 000 руб.
07 дек. 2019, в 07:43
300 руб./за проект
07 дек. 2019, в 00:10
1000 руб./за проект
06 дек. 2019, в 21:54
30000 руб./за проект