C# 在大型datagridview数据源中实现类似excel(性能方面)的过滤
这个问题是作为一个独立的问题提出的。所以现在我对大型数据源(220k行)的过滤速度很慢。我过滤的方式是通过绑定源:C# 在大型datagridview数据源中实现类似excel(性能方面)的过滤,c#,excel,datagridview,filtering,C#,Excel,Datagridview,Filtering,这个问题是作为一个独立的问题提出的。所以现在我对大型数据源(220k行)的过滤速度很慢。我过滤的方式是通过绑定源: mBindingSource.Filter = Filter; 这很慢,因为它可能遍历datatable的所有行 当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。我想知道是否有人知道,或者可以为我指出Excel如何实现其过滤的正确方向。也许一段代码也能有所帮助 一旦你有了一个dataGridView满行,你就可以很快地进行过滤。您的问题可能是在应用过滤器之前正在重
mBindingSource.Filter = Filter;
这很慢,因为它可能遍历datatable的所有行
当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。我想知道是否有人知道,或者可以为我指出Excel如何实现其过滤的正确方向。也许一段代码也能有所帮助 一旦你有了一个
dataGridView
满行,你就可以很快地进行过滤。您的问题可能是在应用过滤器之前正在重新加载dataGridView
我用一个+800K行的数据库做了一个测试,它在不到一秒钟的时间内过滤(可能Excel需要更长的时间)
我就是这样测试的:
从“数据源”窗口中取出表格,将其拖放到窗体上。在我的例子中,我使用一个名为Products的表
这将在名为productsDataGridView
的Form
上创建一个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;
}
在我的例子中,每次我按下按钮1
时,超过820000行的productsDataGridView
都会在不到一秒钟内被过滤
我希望这能帮助您调试代码。谢谢,我会尽快看一看。这比以前好多了。顺便问一下,在应用过滤器之前重新加载datagridview是什么意思?通过重新加载,我的意思是让Fill()
函数加载datagridview获取数据的数据集。可能是这样的:this.productStableApter.Fill(this.dataSet1.Products)代码>