我开发了一个使用DataGridView的应用程序,其中可以包含超过500k行。它目前的结构如下:
DataGridView.DataSource is a BindingSource
BindingSource.DataSource = AggregateBindingListView
AggBLV.SourceLists = {Lists of Data}
AggBLV.Sort("PropertyName")
AggBLV.ApplyFilter(Predicate)
...
AggregateBindingListView是一个实现的集合: Component,IBindingListView,IList,IRaiseItemChangedEvents,ICancelAddNew,ITypedList
这是由http://blogs.warwick.ac.uk/andrewdavey
开发的优秀代码反正。我们已经使用它4年了,它已成为性能瓶颈。
所以这是我的问题:
我有一个500k项的集合,并希望将它们绑定到DataGridView。我需要它来进行多列排序,谓词过滤和性能优先。
我们刚刚升级到C#4.0。
我能做得比我的好吗?我可以发布时间统计等等,但我需要一些东西进行比较。
答案 0 :(得分:1)
您可以尝试使用here所示的数据虚拟化。它适用于WPF,但它可能适用于WinForms,只需稍作调整即可。我们的想法是,不是一次将所有数据保存在内存中,而是只根据需要加载必要的“页面”,并在不再需要时卸载它们。