帮忙看下这个循环哪里出错了?谢谢了。
我做的是一个购物车,用table做临时存储的。 
 可是我这种循环,table中的数据越来越多,不过都是重复的。。。希望各位大哥大姐给看下。 
 代码如下: 
 else 
 {//如果购物车存在,就遍历table中的spID   看有没有是已经存在table中的                
 DataTable   dt=(DataTable)Session[ "bus "]; 
 int   spID=   Convert.ToInt32(this.DataGrid1.DataKeys[e.Item.ItemIndex].ToString()); 
 for(int   i=0;i <   Convert.ToInt32(dt.Rows.Count.ToString());i++)    
 { 
       if   (Convert.ToInt32(dt.Rows[i][ "spID "])==spID) 
          { 
             dt.Rows[i][ "数量 "]=Convert.ToInt32(dt.Rows[i][ "数量 "])+1; 
             double   total=   Convert.ToDouble(dt.Rows[i][ "jiage "])*Convert.ToDouble(dt.Rows[i][ "数量 "]); 
             dt.Rows[i][ "总价 "]=total; 
          } 
             else 
             {      int   r   =Convert.ToInt32(dt.Rows.Count.ToString()); 
                      SqlConnection   conn   =   DB.CreatCon(); 
                      conn.Open(); 
                   SqlCommand   cmd1   =   new   SqlCommand( "select   *   from   sptable   where   spID=    ' "+spID+ " ' ",conn); 
                      SqlDataAdapter   sda1   =   new   SqlDataAdapter(); 
                   DataSet   ds1   =   new   DataSet(); 
                   sda1.SelectCommand=cmd1; 
                   sda1.Fill(ds1, "sptable1 "); 
                   DataRow   dr   =   dt.NewRow(); 
                   dr.ItemArray   =   ds1.Tables[ "sptable1 "].Rows[0].ItemArray; 
                   dt.Rows.Add(dr); 
                   dt.Rows[r][ "数量 "]=1; 
                   dt.Rows[r][ "总价 "]=Convert.ToDecimal(dt.Rows[r][ "jiage "]); 
                   }  					 
       }//for循环 
             Session[ "bus "]=dt; 
 }//第一个else的
------解决方案--------------------这个写法,很新鲜 
   for(int i=0;i < Convert.ToInt32(dt.Rows.Count.ToString());i++)    
   为何不写成 
   for(int i=0;i <dt.Rows.Count;i++)    
   还不知这一个,所有本来是数字类型的,都经过 数字->  字符串-> 数字 的转换。   
------解决方案--------------------这样写重复数据当然会越来越多了,你的思路本身就是有问题的,按你的代码,购物车内有两种商品,现在加入第三种商品,与前两种商品都不同,那么会比较两次,每一次都会加入一条第三种商品的数据,dt.Rows.Count值越大,重复数据就越多   
 在数据库中建立一个临时表,记录购物车中的商品数据,每加入一种商品,去该表中查询,如果已存在,则数量加1,不存在,新增一条记录
------解决方案--------------------购物车一般多会创建一个 和datatable一样的dataview 
 然后用这个 dataview去操作。   
 像你那里就不需要用 
 for(int i=0;i < Convert.ToInt32(dt.Rows.Count.ToString());i++)  
 { 
   if (Convert.ToInt32(dt.Rows[i][ "spID "])==spID) 
 去比较了   
 dataview.Find() 方法直接给你返回包不包含
------解决方案--------------------DataView CartView = new DataView(dt); 
 CartView.Sort =  "spID "; 
 int i; 
 i = CartView.Find(spID); 
 if (i ==-1 )    
  { 
   //不存在 
   DataRow myDv = Cart.NewRow();