关于foreach和动态数组的问题
//这个方法通过等级查询出数据,返回表格
   public DataTable getDS()
   {
       String strSql = "select * from land where level between 1 and 10";
       DataSet ds = new DataSet();
       SqlCommand scom = new SqlCommand(strSql, Dbhelper.Connection);
       SqlDataAdapter sda = new SqlDataAdapter(scom);
       sda.Fill(ds);
       return ds.Tables[0];
   }
  //在这个事件内 调用
    protected void Page_Load(object sender, EventArgs e)
         {
             ArrayList listone = new ArrayList();
             ShowUser su=new ShowUser();
             DataTable dt = su.getDS();
             foreach (DataRow dr in dt.Rows)
             {
                 int i = 1;
                 listone[i] = Convert.ToInt32(dr["level"]);
                 i++;
             }        
         }
我想查询出来的数据保存在一个动态数组里面
但是由于基础不好
语句写错了! 请高人指点一下代码应该怎么改正
vs出错提示是 :                  
索引超出范围。必须为非负值并小于集合大小。
                   参数名: index 
------解决方案-------------------- foreach (DataRow dr in dt.Rows)  
           {                
               listone.add( Convert.ToInt32(dr["level"]));               
           }     
------解决方案--------------------protected void Page_Load(object sender, EventArgs e)
       {
           ArrayList listone = new ArrayList();
           ShowUser su=new ShowUser();
           DataTable dt = su.getDS();
           int i=0;
           foreach (DataRow dr in dt.Rows)
           {
               listone[i] = Convert.ToInt32(dr["level"]);
               i++;
           }    
       }
------解决方案--------------------C# code
  protected void Page_Load(object sender, EventArgs e) 
        { 
            ArrayList listone = new ArrayList(); 
            ShowUser su=new ShowUser(); 
            DataTable dt = su.getDS(); 
            foreach (DataRow dr in dt.Rows) 
            {