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" всегда соответствует названию поля для сортировки.
  • Вопрос задан
  • 271 просмотр
Решения вопроса 1
andrewpianykh
@andrewpianykh
Func<Article, object> orderByFunc = (a) => 
   typeof(Article).GetProperty(OrderBy).GetValue(a);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы