7

Me encantaría agregar algo de ordenación a una EntityCollection que está vinculada a un ItemsControl (en xaml). También me gustaría hacerlo de la manera más simple posible. Parece que esto no es posible.¿Cuál es la forma más fácil de ordenar un EF4 EntityCollection <T>?

Si envuelvo la colección en una versión "ordenada" de la propiedad de la colección dentro de la entidad, pierdo las notificaciones de cambio de colección. No puedo usar un CollectionViewSource porque el BindingListCollectionView de la colección de entidades no admite la ordenación por alguna maldita razón (nota: He visto la publicación del blog con el truco "sucio" para evitar esto, así que no responda con ese kthx).

¿Hay un simple (un par de líneas de xaml, un par de líneas de código, lo que sea) forma de lograr esto?

Respuesta

3

El tipo EntityCollection no se puede filtrar ni ordenar directamente. Es un problema común de LINQ a entidades, consulte: Sort child objects while selecting the parent using LINQ-to-Entities

Una solución sería ordenar la colección de entidades por separado utilizando LINQ cuando necesite los datos, e incurrir en el golpe de rendimiento adicional. Si está trabajando con una colección que espera que sea pequeña y/o poco utilizada, la diferencia en el tiempo de procesamiento podría ser insignificante.

Si desea que la base de datos realice la clasificación y utilice cualquier índice, puede proyectar la entidad principal junto con las entidades secundarias. Alex James publica un ejemplo en su blog de MSDN: http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx. No está limitado a tipos anónimos, por supuesto.

Cuestiones relacionadas