首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DataGrid中显示大型集合

在DataGrid中显示大型集合
EN

Stack Overflow用户
提问于 2010-08-09 17:58:41
回答 1查看 573关注 0票数 0

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

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

代码语言:javascript
复制
Binding b = new Binding();
b.Source = new CollectionViewSource() { Source = MyLargeCollection }.View;
MyDataGrid.SetBinding(DataGrid.ItemsSourceProperty, b);

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

代码语言:javascript
复制
b.Source = MyLargeCollection;

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-09 19:19:48

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

绑定到查询的示例:

代码语言:javascript
复制
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();

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3438921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档