在大型datagridview数据源中实现类似excel(性能明智)的过滤

时间:2016-01-06 10:49:09

标签: c# excel datagridview filtering

此问题来自Suggestions for more efficient filtering on large datagridview datasources的单独问题。所以现在我对大型数据源(220k行)的过滤速度很慢。我过滤的方式是绑定来源:

mBindingSource.Filter = Filter;

这很慢,因为它可能遍历数据表的所有行。

当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。我想知道是否有人知道,或者可以指出我如何实现其过滤的正确方向。也许一段代码也可以提供帮助。

1 个答案:

答案 0 :(得分:2)

如果您有dataGridView个完整行,则过滤速度非常快。您的问题可能是在应用过滤器之前重新加载dataGridView

我对一个行数为+ 800K的数据库进行了测试,并在不到一秒的时间内进行过滤(也许Excel会花费更长的时间)。

这是我测试的方式:

从“数据源”窗口中取出表格并将其拖放到Form上。就我而言,我正在拿一张名为Products的表。

Products dataGridView

这会在名为dataGridView的{​​{1}}上创建Form,因此CS代码就像这样:

productsDataGridView

在我的情况下,每次按下private void button1_Click(object sender, EventArgs e) { BindingSource bs = (BindingSource)productsDataGridView.DataSource; bs.Filter = string.Format("SerialNumber Like '%{0}%'", textBox1.Text); productsDataGridView.DataSource = bs; } 时,行程超过820,000的button1都会在不到一秒的时间内被过滤掉。

我希望这可以帮助您调试代码。