private  List<ProductItem> productitems = new List<ProductItem>(); 
                productitems.Clear();
               foreach (ProductSize ss in checkListSize.CheckedItems)
               {                    productitem.SizeId = ss.Id;
                    foreach (ProductColor cc in checkListColor.CheckedItems)
                    {
                        productitem.SizeId = cc.Id;
                        continue;
                    }
                    productitem.ProductId = GetSetProductID;
                    productitem.SafeStockQuantity = double.Parse(txtSafeStockQuantity.Text.ToString());
                    productitem.Dscription = txtDscriptionItem.Text;
                    productitems.Add(productitem);
               }我的productitems始终是重复的。该怎么解决啊

解决方案 »

  1.   

    Add之前productitem有没有重新new一个?看起来来来去去都还是一个东西。
      

  2.   

    如果SizeID的set方法和cc.Id的get方法没有多余的动作的话,你的
    productitem.SizeId = ss.Id;
      foreach (ProductColor cc in checkListColor.CheckedItems)
      {
      productitem.SizeId = cc.Id;
      continue;
      }
    无异于
    productitem.SizeId = checkListColor.CheckedItems.Last().Id
    最后得出的SizeId都是一样的
      

  3.   

    在类下,直接定义的,    public partial class frmQuitEditProductItems : Terp .Winform .Core .FormBase 
        {
            ServiceAdapter<IBasicDataService> bs = new ServiceAdapter<IBasicDataService>();
            ServiceAdapter<IProductService> es = new ServiceAdapter<IProductService>();
            private  List<ProductItem> productitems = new List<ProductItem>(); 
            private  ProductItem productitem = new ProductItem();
          
            public frmQuitEditProductItems()
            {
                InitializeComponent();
                GetCheckBoxVale();
              
            }
      

  4.   

    我的productitem得出的结果是不一眼的,但是productitems增加add的时候确实重复的。
      

  5.   

     productitems.Clear();
      foreach (ProductSize ss in checkListSize.CheckedItems)
      {  productitem.SizeId = ss.Id;
      foreach (ProductColor cc in checkListColor.CheckedItems)
      {
      productitem.SizeId = cc.Id;
      continue;
      }
      productitem.ProductId = GetSetProductID;
      productitem.SafeStockQuantity = double.Parse(txtSafeStockQuantity.Text.ToString());
      productitem.Dscription = txtDscriptionItem.Text;
      productitems.Add(productitem);
      }代码写的有问题,每次跳出循环就清空,然后下次又进了循环,应该把添加的代码写在循环体的外面去。
      

  6.   

     productitem.ProductId = GetSetProductID;
      productitem.SafeStockQuantity = double.Parse(txtSafeStockQuantity.Text.ToString());
      productitem.Dscription = txtDscriptionItem.Text;
      productitems.Add(productitem);
    这段代码写在循环体外面去
      

  7.   


      productitems.Add(productitem);
    productitem 这个加到productitems这个之前,一定要每次都要实例化因为productitems这个是包含N个productitem这个的对象化,如果不实例化,虽然你的值变了,但是引用的依然是一个对象,所以一直都是重复。
      

  8.   


    直接定义估计是不行的。你要把ProductItem productitem = new ProductItem();这个拿到循环里面去,每次都是一个新的对象,添加到ProductItems里面去
      

  9.   

    如果放在循环体外面,肯定是不行的,得到的productitem就是最终值了。
      

  10.   

    这样很号内存的。这是我另外一段代码
            public List <CompanyBank>  getbankaccount
            {
                get 
                {
                    companybanks.Clear();
                    foreach (TreeListNode ss in treeList1.Nodes)
                    {                    if (ss.GetValue("Id").ToString() == "0")
                        {
                            CompanyBank cb = new CompanyBank();
                            cb.BankName = ss.GetValue("BankName").ToString();
                            cb.BankAccount = ss.GetValue("BankAccount").ToString();
                            companybanks.Add(cb);
                        }
                     
                    }
        
                    return companybanks;
                }
                set
                {
                   // companybanks = value;
                        //treeList1.Nodes
                       // e.Node.GetValue(0).ToString();
                }
            }
    同样是在外面定义的,但是add是不同值!。