集合数量:~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秒。
问题是-我的代码有什么问题吗?如果没有-将相同的大型集合绑定到不同的items控件但具有不同的集合视图的正确方法是什么?
发布于 2010-08-09 19:19:48
只需使用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();这样,您只需加载控件所需的记录
https://stackoverflow.com/questions/3438921
复制相似问题