我想为绑定到ItemsControl(在xaml中)的EntityCollection添加一些排序。我也想尽可能简单地做。看来这是不可能的。
如果我将集合包装在实体内的集合属性的“已排序”版本中,则会丢失集合更改通知。我不能使用CollectionViewSource,因为实体集合的BindingListCollectionView不支持对某些该死的原因进行排序(注意:我看过带有“脏”黑客的博客帖子来解决这个问题,所以请不回答那个kthx)。
是否有一个简单的(几行xaml,几行代码,无论如何)实现这个目的?
答案 0 :(得分:3)
无法直接过滤或排序EntityCollection类型。这是一个常见的LINQ到实体问题,请参阅: Sort child objects while selecting 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。当然,你不仅限于匿名类型。