在大型datagridview数据源中实现像excel(性能明智)过滤
这个问题来自于build议的单独问题, 以便对大型datagridview数据源进行更高效的过滤 。 所以现在我的过滤在大型数据源(220k行)上很慢。 我过滤的方式是通过绑定源:
mBindingSource.Filter = Filter;
这很慢,因为它可能遍历数据表的所有行。
当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。 我想知道是否有人知道,或者可以指出我正确的方向,如何实现其过滤Excel。 也许一小段代码也可以帮助。
一旦你有一个dataGridView
充满了行,它是非常快的过滤。 您的问题可能是您正在重新加载dataGridView
然后再应用筛选器。
我做了一个+ 800K行的数据库testing,并在不到一秒钟过滤(也许Excel将花费更长的时间)。
这是我如何testing:
从“数据源”窗口中取出表格并将其拖放到Form
。 在我的情况下,我正在一个名为产品的表。
这会在名为productsDataGridView
的Form
上创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你的代码。