详细信息
- VS-2008 专业 SP1
- 版本 .net 3.5
- 语言:C#
我有一个 WPF Datagrid,它从 Linq-sql 查询 Datacontext 数据项加载。结果集包含大约 200k 行,加载它们、排序、过滤等非常慢。 提高速度有什么简单易行的方法?
我在搜索时看到的一些东西是 Scrollview、Data virtualization 等人们还谈论 Paging、Profiling 等
最佳答案
加载数据:20 万行是很多数据,没有人(用户)希望在一个地方看到。它肯定会降低您的 UI 用户体验。所以你最好的选择是过滤你的数据以减少它的数量(例如不显示关闭的订单,只显示打开的)。如果你不能这样做,你应该使用虚拟化。我没有看到任何使用分页来显示数据的应用程序(当然除了在网络中)。大多数时候这不是一个好的方法。但是,如果您谈论的是一种类似于搜索引擎结果的数据,则必须使用它。但请记住,大多数用户在搜索引擎结果中不会超过第 10 页。
过滤:对于如此大量的数据(此处为 SQL Server),我建议在您的服务器端执行此操作,或者如我所说,首先过滤整个 200k 以减少服务器端的数据量然后过滤它(为用户)以便在客户端找到一些东西。您可能还会发现以下链接有帮助:
排序:我再次建议服务器-客户端解决方案,但您可能还会发现以下链接有帮助:
- http://blogs.msdn.com/b/jgoldb/archive/2008/08/26/improving-microsoft-datagrid-ctp-sorting-performance.aspx
- http://blogs.msdn.com/b/jgoldb/archive/2008/08/28/improving-microsoft-datagrid-ctp-sorting-performance-part-2.aspx
- http://blogs.msdn.com/b/jgoldb/archive/2008/10/30/improving-microsoft-datagrid-sorting-performance-part-3.aspx
许多人不使用 WPF 数据网格的默认 SortMemberPath
只是因为它对每条记录使用反射,这将大大降低排序过程的性能。
侯赛因
关于c# - WPF 数据网格延迟加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5640924/