7

ItemsControl(xaml)にバインドされているEntityCollectionに並べ替えを追加したいと思います。また、できるだけ簡単にやりたいと思います。これは不可能のようです。

エンティティ内のコレクションプロパティの「ソートされた」バージョンでコレクションをラップすると、コレクション変更通知が失われます。エンティティコレクションのBindingListCollectionViewがなんらかの理由で並べ替えをサポートしていないため、CollectionViewSourceを使用できません(注:これを回避するための「ダーティ」ハックを含むブログ投稿を見たので、そのkthxで応答しないでください)。

これを実現するための簡単な(xamlの数行、コードの数行など)方法はありますか?

4

1 に答える 1

3

EntityCollectionタイプは、直接フィルタリングまたはソートすることはできません。これは一般的なLINQ-to-Entitiesの問題です。参照: LINQ-to-Entitiesを使用して親を選択しながら子オブジェクトを並べ替える

1つの解決策は、データが必要なときにLINQを使用してエンティティコレクションを個別に並べ替えると、パフォーマンスがさらに低下することです。小さいと予想されるコレクションや使用頻度の低いコレクションを使用している場合、処理時間の違いはごくわずかである可能性があります。

データベースで並べ替えを実行し、任意のインデックスを使用する場合は、メインエンティティを子エンティティとともに投影できます。Alex Jamesは、MSDNブログに例を投稿しています:http://blogs.msdn.com/b/alexj/archive/2009/02/25/tip-1-sorting-relationships-in-entity-framework.aspx。もちろん、匿名タイプに限定されません。

于 2011-07-27T16:08:31.900 に答える