现在有10w数据,想每5w取值,怎么在SqlDataReader中循环,取下一个5w
  cmd.Connection = conn;
            cmd.CommandText = sqlStr;
            cmd.CommandType = CommandType.Text;
            int oneBatchSize = 50000;
         //   cmd.CommandTimeout = 7200;
            SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
            int i = 1;
            while(dr.Read())
            {
                Obj.Add(PopulateProblemCodeRawdataFromDr(dr));
                Console.WriteLine(i.ToString());
                i++;
                if (i > oneBatchSize)
                   break;
            }
这是取前5w,后5w怎么循环,怎么开始,请各位大仙帮忙

解决方案 »

  1.   

    int i = 0;
    while(dr.Read())
    {
    if(i++<50000) continue;
    //...
    }
      

  2.   

    取这么多的数据怎么不用SqlDataAdapter呢?取大量数据的时候性能更好。
      

  3.   

    取前五万,后五万,最好是进行分页,取当前页的记录,然后用datareader循环,分页的算法可以参考以前总结的
    http://blog.csdn.net/Fibona/archive/2007/03/02/1519480.aspx
      

  4.   


    DataAdapter内部其实也是DataReader
      

  5.   

    int i = 0; 
    while(dr.Read()) 

    if(i++ <50000) continue; 
    //... 
    }
    =====================
    正解,也只有通过一个i 记录当前的序号