从DataView C#检索数据花费的时间太长

从DataView C#检索数据花费的时间太长,c#,datatable,parallel-processing,delay,dataview,C#,Datatable,Parallel Processing,Delay,Dataview,我有一个名为“dtStocksCriteria”的数据表;其中的每个单元都应转化为一个过程函数。所以我应该遍历所有的行和列 为此,我有行上的并行循环。然后,我选择包含以下代码的行: DataView dv = new DataView(dtStocksCriteria); dv.RowFilter = "xStockCode_FK = " + stock.Code; 之后,在一个内部并行循环中,我应该用如下代码检索每个列值 val = (double)dv[0]

我有一个名为“dtStocksCriteria”的数据表;其中的每个单元都应转化为一个过程函数。所以我应该遍历所有的行和列

为此,我有行上的并行循环。然后,我选择包含以下代码的行:

DataView dv = new DataView(dtStocksCriteria);
                dv.RowFilter = "xStockCode_FK = " + stock.Code;
之后,在一个内部并行循环中,我应该用如下代码检索每个列值

val = (double)dv[0]["column name"];
这个作业大约需要0.5秒,这对我来说太长了。我想把它减少到大约1毫秒

我在mt数据表中有398行和110列,以防有所帮助

有人有什么想法吗?

在C语言中,使用DataView、DataRow或DataTable需要时间。 但是 如果使用
DataRow[int index]
检索单元格值,则所需时间应少于使用
DataRow[string ColumnName]
的时间

所以

当我使用'index'而不是'ColumnName'时,我的代码会更快

但是


它仍然很慢,因为我有太多的专栏。因此,最好的解决方案是首先减少列数。

您不显示“并行”处理的代码。但我敢打赌那里一定出了什么问题。如果不执行任何“并行”处理,性能如何?抱歉,我无法共享我的代码,但您可以想象它就像foreach一样。我使用了c#parallel,比如cs.AsParallel().ForAll(s=>{someoperation});也许这会有所帮助。数据太少,无法在并行执行代码时获得任何东西。感谢Steve,这很有用。好吧,如果这改变了你的方法,你可以发布一个答案,详细说明你是如何解决问题的。这可能对未来的读者有用