如何更改这些代码以更快地执行

时间:2018-08-24 07:28:44

标签: c#

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"];
        }
    }
}

此代码正常工作,但是执行时间太长。如何更改它们以更快地执行?

1 个答案:

答案 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;
         }
    }
}

您还需要进行一些严格的业务逻辑处理,但是我将按原样添加。