0

集合中的项目数量:~100k 列中显示的字段数量:4-10

问题本身 - 集合是从使用 EntityFramework 的数据库中获取的。在开发计算机上加载和具体化所有所需数据大约需要 10-12 秒。出现的另一件事是同一个集合可以绑定到多个控件,因此,它们必须单独过滤(= 不设置默认集合视图过滤器)。目前,我将绑定设置如下:

Binding b = new Binding();
b.Source = new CollectionViewSource() { Source = MyLargeCollection }.View;
MyDataGrid.SetBinding(DataGrid.ItemsSourceProperty, b);

创建一个新的 CollectionViewSource 大大增加了初始化所需的时间 - 几分钟(我怀疑它出于某种原因枚举了 100k 集合)。我的意思是,如果我只是设置:

b.Source = MyLargeCollection;

从数据库加载和具体化数据只需 10-12 秒。

问题 - 我的代码有问题吗?如果不是 - 将相同的大型集合绑定到不同的项目控件但具有不同的集合视图的正确方法是什么?

4

1 回答 1

1

只需使用 Linq to Entities 加载具有指定过滤器的实体,以确保您不会加载所有 10k 记录,因为没有用户对具有 10k 记录的网格感兴趣。

绑定到查询的示例:

grid1.DataContext = (from i in context.MyItems
                    where i.MyPropertyToFilter == "myFilter"
                    select i).ToList();

grid2.DataContext = (from i in context.MyItems
                    where i.MyOtherPropertyToFilter == "myOhterFilter"
                    select i).ToList();

这样,您只需加载控件所需的记录

于 2010-08-09T11:19:48.133 回答