DataTable dtReturn = null; //用于返回结果的DataTable
DataRow[] arrRow1 = dt1.Select(string.Format("ConCe = '{0}'", dt.Rows[0][0].ToString()));//过滤条件
dtReturn = arrRow1[0].Table.Clone(); //复制需要更新的表的结构
for (int i = 0; i < dt.Rows.Count; i++)
{
//更新表的条件
string expression = "ConCe= "+ dt.Rows[i][0].ToString();
//要更新的字段
string variable = "name";
//更新字段的值
string value1 = dt.Rows[i][4].ToString();
string value2 = dt.Rows[i][5].ToString();
//不重复字段
string primaryKey = "ConCe";
DataRow[] arrRow = dt1.Select(string.Format("ConCe = '{0}'", dt.Rows[i][0].ToString()));//选出满足更新条件的行
//DataRow[] arrRow = dt1.Select("ConCe= " + dt.Rows[i][0].ToString()); //选出满足更新条件的行
//dtReturn = arrRow[0].Table.Clone(); //复制需要更新的表的结构
bool[] rowChanged = new bool[dt1.Rows.Count]; //用于保存修改的行的索引号
for (int ii = 0; ii < dt1.Rows.Count; ii++)
{
rowChanged[ii] = false;
}
//将修改的行存入dtReturn
foreach (DataRow row in arrRow)
{
row["AQuan"] = value1; //将要更新的值写入需要更新的行的对应字段
row["APrice"] = value2; //将要更新的值写入需要更新的行的对应字段
for (int ii = 0; ii < dt1.Rows.Count; ii++)
{
//找到修改过的行
if (dt1.Rows[i][primaryKey].ToString() == row[primaryKey].ToString())
{
dtReturn.ImportRow(row); //将修改过的行存入dtReturn
rowChanged[i] = true; //将修改过的行号对应的标志位置1
break;
}
}
}
//将未修改的行存入dtReturn
for (int ii = 0; ii < dt1.Rows.Count; ii++)
{
if (rowChanged[i] == false)
dtReturn.ImportRow(dt1.Rows[i]);
}
}