优化代码,加快迭代速度

int count = dt.Rows.Count;
bool bGoOn = false; // 标志位, 默认迭代结束
List Min1_WaveLength = new List();
List Minn_WaveLength = new List();
List Min1_Strength = new List();
List Minn_Strength = new List();
//第一次迭代
while (true)
{
for (int i = 1; i < count - 2; i++)//迭代count - 2,减去第一个强度值和最后一个强度值
{
if (i < count - 1)//极限值count-1
{
double A_Strength = Convert.ToDouble(dt.Rows[i][2]);
double X_Strength = Convert.ToDouble(dt.Rows[i - 1][2]);
double I_Strength = Convert.ToDouble(dt.Rows[i + 1][2]);

                     double Aln_Strength = Math.Sqrt(A_Strength);   //迭代初始值
                    double Xln_Strength = Math.Sqrt(X_Strength);   //迭代初始值
                    double Iln_Strength = Math.Sqrt(I_Strength);   //迭代初始值


                    double X_WaveLength = Convert.ToDouble(dt.Rows[i][1]);
                    double Avg_Strength = (Xln_Strength + Iln_Strength) / 2;
                    if (Aln_Strength < Xln_Strength && Aln_Strength < Iln_Strength)
                    {
                        Min1_WaveLength.Add(X_WaveLength);
                        Min1_Strength.Add(Aln_Strength);
                        dt.Rows[i][1] = X_WaveLength;
                        dt.Rows[i][2] = Aln_Strength; //替代中间值
                    }
                }
            }
            if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
                break;
        }
        //第一次以外的迭代
        while (true)
        {

            for (int j = 1; j < count-2; j++)//迭代count - 2,减去第一个强度值和最后一个强度值
            {
                if (j < count -1)//极限值count-1
                {
                    double A_Strength = Convert.ToDouble(dt.Rows[j][2]);
                    double X_Strength = Convert.ToDouble(dt.Rows[j - 1][2]);
                    double I_Strength = Convert.ToDouble(dt.Rows[j + 1][2]);

                    double X_WaveLength = Convert.ToDouble(dt.Rows[j][1]);
                    double Avg_Strength = (X_Strength + I_Strength) / 2;
                    if (A_Strength > Avg_Strength)
                    {
                        dt.Rows[j][1] = X_WaveLength;
                        dt.Rows[j][2] = Avg_Strength; // 取平均替代中间值

                        bGoOn = true; // 表示需要再循环一次
                    }
                }
            }
            if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
                break;
        }
                    迭代出来的怕是有上百万数据,求相同功能的优化代码!

while (true)
{

        for (int j = 1; j < count-2; j++)//迭代count - 2,减去第一个强度值和最后一个强度值
        {
            if (j < count -1)//极限值count-1
            {
                double A_Strength = Convert.ToDouble(dt.Rows[j][2]);
                double X_Strength = Convert.ToDouble(dt.Rows[j - 1][2]);
                double I_Strength = Convert.ToDouble(dt.Rows[j + 1][2]);

                double X_WaveLength = Convert.ToDouble(dt.Rows[j][1]);
                double Avg_Strength = (X_Strength + I_Strength) / 2;
                if (A_Strength > Avg_Strength)
                {
                    dt.Rows[j][1] = X_WaveLength;
                    dt.Rows[j][2] = Avg_Strength; // 取平均替代中间值

                    bGoOn = true; // 表示需要再循环一次
                }
            }
        }
        if (!bGoOn) // bGonOn == FALSE,表示整个for循环里都是符合要求的,退出
            break;
    }

这里可以优化下