Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在大型datagridview数据源中实现类似excel(性能方面)的过滤_C#_Excel_Datagridview_Filtering - Fatal编程技术网

C# 在大型datagridview数据源中实现类似excel(性能方面)的过滤

C# 在大型datagridview数据源中实现类似excel(性能方面)的过滤,c#,excel,datagridview,filtering,C#,Excel,Datagridview,Filtering,这个问题是作为一个独立的问题提出的。所以现在我对大型数据源(220k行)的过滤速度很慢。我过滤的方式是通过绑定源: mBindingSource.Filter = Filter; 这很慢,因为它可能遍历datatable的所有行 当我尝试在Excel中过滤相同大小的数据时,过滤速度要快很多倍。我想知道是否有人知道,或者可以为我指出Excel如何实现其过滤的正确方向。也许一段代码也能有所帮助 一旦你有了一个dataGridView满行,你就可以很快地进行过滤。您的问题可能是在应用过滤器之前正在重

这个问题是作为一个独立的问题提出的。所以现在我对大型数据源(220k行)的过滤速度很慢。我过滤的方式是通过绑定源:

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)