Словарь выражений Linq [дубликат]

Возможный дубликат:
Объявление func динамически

Я пытаюсь создать запрос, используя linq-to- sql и, чтобы обеспечить возможности сортировки, я написал что-то вроде этого:

private Dictionary>> OrderDict { get; set; }


OrderDict = new Dictionary>>();
OrderDict.Add("Date", p => (DateTime)p.RequestDateTime);
OrderDict.Add("Username", p => (string)p.CdUsername);
OrderDict.Add("Portfolio", p => (string)p.CdPortfolio);
OrderDict.Add("Url", p => (string)p.RequestedUrl);
OrderDict.Add("Result", p => (bool)p.RequestResult);
OrderDict.Add("Duration", p => (float)p.RequestDuration);


private IQueryable SetOrder(string orderBy, bool orderDirection, IQueryable query)
{
    if (orderDirection)
    return query.OrderByDescending(OrderDict[orderBy]);
    else
    return query.OrderBy(OrderDict[orderBy]);
}

Моя цель - использовать функцию SortOrder для сортировки запроса. Основная проблема в том, что Func возвращает объект, а linq не может сортировать элементы этого типа. Мне действительно нужно использовать объект в качестве возвращаемого типа, потому что мне нужно сортировать по широкому диапазону типов. Можно ли немного изменить этот код и заставить его работать?

Спасибо,

Gio

1
задан Community 23 May 2017 в 12:10
поделиться