C#运行的时候会报错,在位置5处没有任何行解决方法
C#运行的时候会报错,在位置5处没有任何行
上面这段代码,第一步贤惠从一个表格里选出符合我需要的组成一个新表格,然后再将表格中重复的删掉(重复的数据只留下一行),运行的时候会在 if ((double.Parse(dtbest.Rows[i]["A"].ToString()) == double.Parse(dtbest.Rows[j]["A"].ToString())) && (double.Parse(dtbest.Rows[i]["B"].ToString()) == double.Parse((dtbest.Rows[j]["B"].ToString()))))这里报错:位置5处没有任何行,看不出来哪里出问题了。请高手指点一下。
------解决思路----------------------
mList.Clear();这句话可以不要,本身就是刚new出来的,里面没东西
mList.Add(j)之前,先判断
if(!mList.Contains(j));
然后不要foreach
你应该for(int i=mList.Count;i>0;i--)
从后往前删,否则
比如你想删除2,3行
你删除了2,原来的3行变成2行,4行变成3行,你再删3,其实是把原来的4删除了
dtbest = dt.Copy();
dtbest.Clear();
for (int i = 0; i < P; i++)
{
bool first = true;
for (int j = 0; j < P; j++)
{
double m = double.Parse(dt.Rows[j]["A"].ToString());
double n = double.Parse(dt.Rows[i]["A"].ToString());
double p = double.Parse(dt.Rows[j]["B"].ToString());
double q = double.Parse(dt.Rows[i]["B"].ToString());
if (((m < n) && (p < q)) || ((m == n) && (p < q)) || ((m < n) && (p == q)))
{
first = false;
break;
}
}
if (first == true)
{
dtbest.ImportRow(dt.Rows[i]);
}
}
for (int i = 0; i < dtbest.Rows.Count; i++)
{
for (int j = 0; j < dtbest.Rows.Count; j++)
{
if (i != j)
{
if ((double.Parse(dtbest.Rows[i]["A"].ToString()) == double.Parse(dtbest.Rows[j]["A"].ToString())) && (double.Parse(dtbest.Rows[i]["B"].ToString()) == double.Parse((dtbest.Rows[j]["B"].ToString()))))
{
dtbest.Rows.RemoveAt(j);
}
}
}
}
上面这段代码,第一步贤惠从一个表格里选出符合我需要的组成一个新表格,然后再将表格中重复的删掉(重复的数据只留下一行),运行的时候会在 if ((double.Parse(dtbest.Rows[i]["A"].ToString()) == double.Parse(dtbest.Rows[j]["A"].ToString())) && (double.Parse(dtbest.Rows[i]["B"].ToString()) == double.Parse((dtbest.Rows[j]["B"].ToString()))))这里报错:位置5处没有任何行,看不出来哪里出问题了。请高手指点一下。
------解决思路----------------------
mList.Clear();这句话可以不要,本身就是刚new出来的,里面没东西
mList.Add(j)之前,先判断
if(!mList.Contains(j));
然后不要foreach
你应该for(int i=mList.Count;i>0;i--)
从后往前删,否则
比如你想删除2,3行
你删除了2,原来的3行变成2行,4行变成3行,你再删3,其实是把原来的4删除了