什么是对 EF4 EntityCollection<T> 进行排序的最简单方法?

7

我希望能够给绑定到ItemsControl的EntityCollection添加一些排序功能(在xaml中)。并且我希望尽可能简单地实现这个功能。但是看起来这是不可能的。

如果我在Entity中将集合包装成“排序”版本的集合属性,那么就会失去集合更改通知。 我不能使用CollectionViewSource,因为实体集合的BindingListCollectionView由于某种神奇的原因不支持排序(注意:我已经看到了带有“肮脏”hack的博客文章,所以请不要用那个回答我,谢谢)。

有没有一种简单的方法(几行xaml代码,几行代码或者其他方式)可以实现这个功能呢?

1个回答

3
EntityCollection类型不能直接进行筛选或排序,这是LINQ-to-Entities常见的问题,参考:使用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。当然,您不仅限于匿名类型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接