日期:2014-05-17  浏览次数:21315 次

关于DataTable dt.rows.count的问题
public void Send()
  {
  DataTable dt = new DataTable();
  int i = 0;
  while (.......)
  {
  dt = sqlhelper.SelectSubmitAll();
   
  if (dt.Rows.Count > 0)
  {
  for (i = 0; i < dt.Rows.Count; i++)
  {
   
   
  sql.InsertSending(....);

  sendMessage(....);
  sql.DeleteSubmit(....);
   
  }
   
  }



就这样,在每次发送数据的时候,将数据录入到Sending表,一边录入一边删除,但是,那个dt.rows.count也会不断的变化,影响发送的数据,这该怎么改才能使Submit的表数据在删除的同时,dt.rows.count不会变,不会影响到结果,即例如:
dt.rows.count=10,放到里面去,那么第一次,i=0,i<10,i++;第二次,i=1,i<9,i++,第三次....直到i=5,跳出,这样的话,发送的数据量就少了一半,这该怎么改才能解决这个问题....

------解决方案--------------------
用遍历保存count = dt.Rows.Count那样, rows怎么变,变量值不变,循环中用count 变量
------解决方案--------------------
int count=dt.Rows.Count;放在循环外面
for (i = 0; i < count; i++)
{
...
}

------解决方案--------------------
简单点说 就是想上面两位那样 把dt.Rows.Count提出来 提到while的外面
不过对于你要实现的 说实话 我还没完全理清楚
------解决方案--------------------
改用
foreach (DataRow dr in dt.Rows)
{

}

“Submit的表数据在删除的同时,dt.rows.count不会变 ” 这个是不可能的 !