读书人

foreach是什么执行流程呢?该怎么处理

发布时间: 2012-04-08 14:38:30 作者: rapoo

foreach是什么执行流程呢?
我用两个foreach遍历一个数据表的行和列,将这个表的一列拆分成两列,放入一个新表,为什么执行的时候,提示新表的列已存在。但是看流程,只是增加了一次啊!请高手帮忙啊!

而且,我只在表中取出一列,没有夺取,怎么会执行两次呢?是有多行问题造成的吗?怎么解决呢?

C# code
 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());                }


[解决办法]
foreach 是循环。。。
把增加列的语句拿出foreach
[解决办法]
这个循环foreach (DataColumn myDC in myDTC[0].Columns)
里面有
DataColumn myNewDC1 = myNewTable.Columns.Add(myValue + "minValue".ToString(),
就不对。
你反复添加列了。
[解决办法]
用字典吧 不懂。。。
[解决办法]
foreach就是一条一条遍历啊 类似for循环,只是不像for循环那样可以看到变量的变化

读书人网 >C#

热点推荐