2012-05-15 2 views
0

У меня есть следующий фрагмент кода LINQВозврат ObservableCollection из Linq запроса

Примечание -> Это Metro App, и ICollectionView не работает, как ожидается, для группирования/сортировки.

 ObservableCollection<int> ints = new ObservableCollection<int>(); 
     ints.Add(3); 
     ints.Add(4); 
     ints.Add(5); 
     ints.Add(6); 
     ints.Add(3); 
     ints.Add(4); 
     ints.Add(1); 
     ints.Add(2); 


     var groupedInts = ints.GroupBy(i=>i).Select(i=> new {Key=i.Key, Count=i.Count()}); 

Я хочу, чтобы следующие

  1. Чтобы подписаться на groupedInts или ObservableCollection соответствующих ему (в основном привязки данных из WPF/Metro UI для groupInts)

  2. Любое изменение в Интс (оригинал ObservableCollection) должны отображаться groupedInts (так что пользовательский интерфейс, который подписывается на groupInts/related ObservableCollection, может отображать изменения).

В реальном сценарии структура данных несколько сложна (6-7 свойств), но проблема сводится к описанной выше проблеме.

ответ

1

Там два пути я могу думать.

первый: Используйте Bindable Linq/Continuous Linq

второй: Создать отдельную CollectionView для groupedInts. Когда исходная коллекция меняется, это должно измениться вместе с ней. Here's a nice and neat tutorial

Идея AngelWPFs об уведомлении свойства LINQ как изменена также жизнеспособна.

+0

Группировка с ICollectionView - это путь, так что +1 – blindmeis

+0

ICollectionView - это способ пойти в WPF. Но это не работает в приложениях метро. Это и послужило причиной этого вопроса. Пометка с WPF заключалась в том, чтобы получить другие альтернативы (например, BindableLinq/obtics) – Tilak

+1

Хм, вы должны были упомянуть в своем вопросе, что вы работаете над приложением метро - как мы должны знать? –

1

Ручка ints.CollectionChanged события и обновить groupedInts переменные с тем же LINQ запросом там ...

+0

Эта идея имеет смысл, я ищу отключение события, поскольку groupedInts будет возвращен из функции и не будет иметь никаких дополнительных ссылок (кроме CollectionViewSource.Source) – Tilak

Смежные вопросы