7

Mi piacerebbe aggiungere un po 'di ordinamento a una EntityCollection associata a un oggetto ItemsControl (in xaml). Mi piacerebbe anche farlo nel modo più semplice possibile. Sembra che questo non sia possibile.Qual è il modo più semplice per ordinare un EF4 EntityCollection <T>?

Se avvolgo la raccolta in una versione "ordinata" della proprietà della raccolta all'interno dell'entità, perdo le notifiche di modifica della raccolta. Non posso usare CollectionViewSource perché BindingListCollectionView della raccolta di entità non supporta l'ordinamento per qualche maledetto motivo (nota: Ho visto il post del blog con l'hack "sporco" per aggirare questo, quindi per favore non rispondere con che kthx).

C'è un modo semplice (paio di linee di xaml, coppie di codice, qualunque) modo per raggiungere questo obiettivo?

risposta

3

Il tipo EntityCollection non può essere filtrato o ordinato direttamente. È un problema comune LINQ-to-Entities, vedere: Sort child objects while selecting the parent using LINQ-to-Entities

Una soluzione sarebbe quella di ordinare separatamente la raccolta di entità utilizzando LINQ quando sono necessari i dati e sostenere il colpo di prestazioni aggiuntive. Se stai lavorando con una collezione che ti aspetti di essere piccola e/o poco utilizzata, la differenza nel tempo di elaborazione potrebbe essere trascurabile.

Se si desidera che il database esegua l'ordinamento e utilizzi qualsiasi indice, è possibile proiettare l'entità principale insieme alle entità figlio. Alex James pubblica un esempio nel suo blog MSDN: http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx. Non sei limitato ai tipi anonimi, ovviamente.

Problemi correlati