for (int i = 0; i < clear_no7.Rows.Count; i++)
{
for (int j = 0; j < lst_cnacld.Rows.Count; j++)
{
if (lst_cnacld.Rows[j]["Code"].ToString() == clear_no7.Rows[i]["Code"].ToString())
{
clear_no7.Rows[i]["Route"] = lst_cnacld.Rows[j]["Route"];
}
else if ((Convert.ToInt32(lst_cnacld.Rows[j]["Code"]) / 10).ToString() == clear_no7.Rows[i]["Code"].ToString())
{
clear_no7.Rows[i]["Route"] = lst_cnacld.Rows[j]["Route"];
}
else if ((Convert.ToInt32(lst_cnacld.Rows[j]["Code"]) / 100).ToString() == clear_no7.Rows[i]["Code"].ToString())
{
clear_no7.Rows[i]["Route"] = lst_cnacld.Rows[j]["Route"];
}
else if ((Convert.ToInt32(lst_cnacld.Rows[j]["Code"]) / 1000).ToString() == clear_no7.Rows[i]["Code"].ToString())
{
clear_no7.Rows[i]["Route"] = lst_cnacld.Rows[j]["Route"];
}
}
}
此代码正常工作,但是执行时间太长。如何更改它们以更快地执行?
答案 0 :(得分:0)
在没有任何测试数据或不知道您的类型的情况下很难测试代码,但是我会这样做:
我将创建类来反映我正在使用的类型,例如:
public class TempType
{
public string Route { get; set; }
public int Code { get; set; }
}
然后,我将避免使用数据表,而是使用类列表:
var listA = new List<TempType>();
var listB = new List<TempType>();
foreach (var typeA in listA)
{
foreach (var typeB in listB)
{
if (typeA.Code == typeB.Code
|| typeA.Code / 10 == typeB.Code
|| typeA.Code / 100 == typeB.Code
|| typeA.Code / 1000 == typeB.Code
)
{
typeB.Route = typeA.Route;
}
}
}
您还需要进行一些严格的业务逻辑处理,但是我将按原样添加。