我用两个foreach遍历一个数据表的行和列,将这个表的一列拆分成两列,放入一个新表,为什么执行的时候,提示新表的列已存在。但是看流程,只是增加了一次啊!请高手帮忙啊!而且,我只在表中取出一列,没有夺取,怎么会执行两次呢?是有多行问题造成的吗?怎么解决呢?
 DataTable myNewTable = new DataTable();                foreach (DataRow myDR in myDTC[0].Rows)
                {
                    DataRow myNewDR=myNewTable.NewRow();
                    
                    foreach (DataColumn myDC in myDTC[0].Columns)
                    {
                         String myValue = myDC.ColumnName.ToString().Trim();
                         String minValue,maxValue;
                         //
                         //对数量进行判断,并拆分为最大值和最小值(自定义类实现,这里没有问题)
                         //
                         if (myDR[myDC] != DBNull.Value && myDR[myDC].ToString() != "")
                         {
                             String test = myDR[myDC].ToString().Trim();
                             SpecialCharExist mySCE = new SpecialCharExist();
                             List<String> myCompositionList = new List<string>();
                             bool flagRC = mySCE.whetherRelationCharExist(test, out myCompositionList);
                             if (flagRC == true)
                             {
                                 string[] myCompositionResult = myCompositionList.ToArray();
                                 minValue = myCompositionResult[0];
                                 maxValue = myCompositionResult[1];
                             }
                             else
                             {                                 minValue = test;
                                 maxValue = test;
                             }
                         }
                         else
                         {
                             minValue = "0";
                             maxValue = "0";
                         }
                        //
                        //对新表增加列并进行赋值,赋给其最小值与最大值,问题可能出现在这里,但是我找不到啦!
                        //                        
                         DataColumn myNewDC1 = myNewTable.Columns.Add(myValue + "minValue".ToString(), typeof(double));
                         myNewDR[myValue + "minValue"] = Convert.ToDouble(minValue);
                         DataColumn myNewDC2 = myNewTable.Columns.Add(myValue + "maxValue".ToString(), typeof(double));
                         myNewDR[myValue + "maxValue"] = Convert.ToDouble(maxValue);
                        /*
                        myNewTable.Columns.Add(myValue+"minValue",typeof(double));                        myNewTable.Columns.Add(myValue+"maxValue",typeof(double));                        myNewDR[myElement + "minValue"] = Convert.ToDouble(minValue);
                        myNewDR[myElement + "maxValue"] = Convert.ToDouble(maxValue);
                        */
                    }                    myNewTable.Rows.Add(myNewDR);
                    MessageBox.Show(myNewTable.Rows[0][0].ToString());
                }

解决方案 »

  1.   

    foreach 是循环
    把增加列的语句拿出foreach
      

  2.   

    这个循环foreach (DataColumn myDC in myDTC[0].Columns)
    里面有
    DataColumn myNewDC1 = myNewTable.Columns.Add(myValue + "minValue".ToString(),
    就不对。
    你反复添加列了。
      

  3.   

    恩,发完这个帖子,我想出,是多行数据造成的,后来加了一个bool型变量来标识是否已经添加。哎,编程累啊,一丝不苟才可以啊!大家有啥好办法吗?
      

  4.   

    foreach就是一条一条遍历啊 类似for循环,只是不像for循环那样可以看到变量的变化