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

这个问题来自于build议的单独问题, 以便对大型datagridview数据源进行更高效的过滤 。 所以现在我的过滤在大型数据源(220k行)上很慢。 我过滤的方式是通过绑定源:

mBindingSource.Filter = Filter; 

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

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

一旦你有一个dataGridView充满了行,它是非常快的过滤。 您的问题可能是您正在重新加载dataGridView然后再应用筛选器。

我做了一个+ 800K行的数据库testing,并在不到一秒钟过滤(也许Excel将花费更长的时间)。

这是我如何testing:

从“数据源”窗口中取出表格并将其拖放到Form 。 在我的情况下,我正在一个名为产品的表。

产品dataGridView

这会在名为productsDataGridViewForm上创build一个dataGridView ,所以CS代码如下所示:

 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; } 

就我而言,每次按下buttonbutton1 ,具有超过820,000行的productsDataGridView都会在不到一秒的时间内被过滤掉。

我希望这可以帮助你debugging你的代码。