我用两个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());
}
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
里面有
DataColumn myNewDC1 = myNewTable.Columns.Add(myValue + "minValue".ToString(),
就不对。
你反复添加列了。