Я начал немного экспериментировать с динамической библиотекой LINQ. Я пытаюсь заменить группу операторов LINQ несколькими или только одним динамическим запросом LINQ. Мой существующий статический запрос выглядит следующим образом:
private List<TicketChartData> GenerateImpl(IList<ServiceItem> myList)
{
var output = from ticket in myList
group ticket by ticket.Region into grouped
orderby grouped.Count() descending
select new TicketChartData(grouped.Key, grouped.Count(), grouped.ToList());
return output.ToList();
}
Как видите, моя единица работы - ServiceItem
.
Это работает все отлично и дает мне набор результатов, сгруппированных по Region
. Используя DynamicLibrary, я пытаюсь группировать по любому допустимому динамическому полю (я буду обрабатывать любые проверки отдельно). Итак, я попытался написать тот же запрос, используя DynamicLibrary, но не очень успешно Вот новый метод, который, конечно, не компилируется:
private List<TicketChartData> GenerateImpl(IList<ServiceItem> myList, string field)
{
IQueryable<ServiceItem> queryableList = myList.AsQueryable<ServiceItem>();
IQueryable groupedList = queryableList.GroupBy(field,"it").
OrderBy("Key descending").
Select("new (Key as Key)"); // Not what i need
return output.ToList();
}
Мне не удалось извлечь ни Count
, ни List
из группировки. Как мне это сделать? Я потратил значительное количество времени в поисках решения. Если возможно, я хочу избегать использования Reflection. У меня есть несколько указателей в этой области по следующей ссылке, но это не помогает моей реальной проблеме. Заранее спасибо за любую помощь.
System.LINQ.Dynamic: выберите ("new (...)") в список (или любую другую перечисляемую коллекцию )