7

我想为绑定到 ItemsControl(在 xaml 中)的 EntityCollection 添加一些排序。我也想尽可能简单地做到这一点。看来这是不可能的。

如果我将集合包装在实体内集合属性的“排序”版本中,我会丢失集合更改通知。我不能使用 CollectionViewSource 因为实体集合的 BindingListCollectionView 不支持排序,因为某些该死的原因(注意:我已经看到博客文章用“脏”黑客来解决这个问题,所以请不要用那个 kthx 回答)。

有没有一种简单的(几行xaml,几行代码,等等)方法来实现这一点?

4

1 回答 1

3

EntityCollection 类型不能直接过滤或排序。这是一个常见的 LINQ-to-Entities 问题,请参阅: Sort child objects while select the parent using LINQ-to-Entities

一种解决方案是在您需要数据时使用 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 回答