2014-12-17 7 views
0

У меня есть запрос, который работает отличноПроблема с LINQ Group по запросу

private ObservableCollection<Grouping<string, SEListItemTemplate>> MonkeysGrouped { get; set; } 


      var sorted = from item in CollPublic 
         orderby item.Title 
         group item by item.Title into listData 
         select new Grouping<string, SEListItemTemplate>(listData.Key, listData); 

      MonkeysGrouped = new ObservableCollection<Grouping<string, SEListItemTemplate>>(sorted); 

      list.ItemsSource = MonkeysGrouped; 

Если теперь я хочу использовать пользовательские сортировки & Функции Группировка, что-то, как показано ниже, как я могу это сделать?

var sorted = from item in CollPublic 
         orderby (OrderByFunc) 
         group item by (GroupByFunc) into listData 
         select new Grouping<string, SEListItemTemplate>(listData.Key, listData); 

Если я пытаюсь это последняя строка (Выбрать новый Группировка ..) вызывает ошибку компиляции Если изменить строку в объект компилируется нормально, но выдает ошибку во время выполнения, говоря по крайней мере 1 объект должен реализовать IComparable для Заказ & По крайней мере, один объект должен реализовать IGrouping для группирующей части в вышеуказанном запросе. Как я могу это достичь?

Только в случае необходимого ниже определение моего обычая Сортировать & Группа Funcs

public Func<SEListItemTemplate, Object> OrderByFunc 
    { 
     get{return _orderByFunc; } 
     set {_orderByFunc = value; } 
    } 

public Func<SEListItemTemplate, Object> OrderByFunc 
    { 
     get {return _orderByFunc; } 
     set {_orderByFunc = value; } 
    } 

Любая помощь приветствуется. Thanks

ответ

0

Обновление: Следующий код работал хорошо. Пожалуйста, дайте мне знать, если есть лучший способ написать эту функцию лямбда ниже. `

var sorted = CollPublic.OrderBy(OrderByFunc).GroupBy(GroupByFunc); 

       foreach (var item in sorted) 
       { 
        var t = new Grouping<object, SEListItemTemplate>(item.Key, item); 
        MonkeysGrouped.Add(t); 
       } 
list.ItemsSource = MonkeysGrouped; 
Смежные вопросы