由于 CodeReview 不允许片段比较,我在这里问我的问题。如果这不符合 SO 规则,我深表歉意,但我无法测试或基准测试我的问题。
这里去......我目前有以下工作代码:
string currentValue, valueToFind;
for (int i = 1; i <= rows; i++)
{
currentValue = source.CellValueString(i, 1);
for (int j = 2; j <= localRows; j++)
{
valueToFind = target.CellValueString(j, 4);
if (valueToFind == currentValue)
{
//Set Excel cell value
break;
}
}
}
请注意,rows
andlocalRows
通常具有大约 300 的值,因此这意味着最多 90.000 次迭代。source
并且target
是用于处理 Excel 对象的自定义类的实例。该方法CellValueString()
仅用于获取单元格的字符串值。我在想也许下面的代码可能会更高效:
//GetValues() would be a method to get the values of the given range
string[] values = source.GetValues("A1:A" + rows);
string[] valuesToCompare = target.GetValues("D2:D" + localRows);
foreach(string currentValue in values)
{
foreach(string valueToFind in valuesToCompare)
{
if(valueToFind == currentValue)
{
//Set Excel cell value
break;
}
}
}
第二种方法,当一次获取所有值时,是否比迭代更快,并且在每次迭代时从 Excel 中获取值进行比较?
欢迎任何其他提高性能的方法!