Какой самый простой способ сортировки EF4 EntityCollection <T>? - PullRequest
7 голосов
/ 17 мая 2010

Я бы хотел добавить некоторую сортировку к EntityCollection, которая связана с ItemsControl (в xaml). Я также хотел бы сделать это как можно проще. Похоже, что это невозможно.

Если я оберну коллекцию в «отсортированную» версию свойства коллекции в Entity, я потеряю уведомления об изменениях коллекции. Я не могу использовать CollectionViewSource, потому что BindingListCollectionView коллекции сущностей не поддерживает сортировку по какой-то проклятой причине ( note: Я видел сообщение в блоге с "грязным" хаком, чтобы обойти это, поэтому, пожалуйста, не отвечай с этим kthx).

Есть ли простой (пара строк xaml, пара строк кода и т. Д.) Способ добиться этого ??

1 Ответ

3 голосов
/ 27 июля 2011

Тип EntityCollection нельзя напрямую фильтровать или сортировать. Это распространенная проблема LINQ-to-Entities, смотрите: Сортировка дочерних объектов при выборе родителя с использованием LINQ-to-Entities

Одним из решений будет сортировка коллекции сущностей по отдельности с помощью LINQ, когда вам нужны данные, и дополнительный удар по производительности. Если вы работаете с коллекцией, которую вы планируете использовать в небольших объемах и / или использовать редко, разница во времени обработки может быть незначительной.

Если вы хотите, чтобы база данных выполняла сортировку и использовала любые индексы, вы можете проецировать основную сущность вместе с дочерними сущностями. Алекс Джеймс публикует пример в своем блоге MSDN: http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx. Конечно, вы не ограничены анонимными типами.

...