需求:由于数据库查询时有字段要求,不能将某些重复值的行合并,前端显示要求合并(合并两个字段值不一致,其他字段值一致的行,将不一致的两个字段累加)
DataTable dataTable2 = dataTable.Clone(); //复制一个已经查询出的dataTable的结构(说白了就是复制它的字段) for (int i=0;i<dataTable.Rows.Count;i++) { DataRow dr = dataTable2.NewRow(); dr["ID"] = dataTable.Rows[i]["ID"]; dr["DEPT_NAME"] = dataTable.Rows[i]["DEPT_NAME"]; dr["TYPE"] = dataTable.Rows[i]["TYPE"]; dr["NAME"] = dataTable.Rows[i]["NAME"]; dr["STATUS"] = dataTable.Rows[i]["STATUS"]; dr["DAY_AMOUNT"] = dataTable.Rows[i]["DAY_AMOUNT"]; dr["DAY_HOUR"] = dataTable.Rows[i]["DAY_HOUR"]; dr["DAY_RATE"] = dataTable.Rows[i]["DAY_RATE"]; dr["MONTH_AMOUNT"] = dataTable.Rows[i]["MONTH_AMOUNT"]; dr["MONTH_HOUR"] = dataTable.Rows[i]["MONTH_HOUR"]; dr["MONTH_RATE"] = dataTable.Rows[i]["MONTH_RATE"]; dr["YEAR_AMOUNT"] = dataTable.Rows[i]["YEAR_AMOUNT"]; dr["QUANTITY_UNIT"] = dataTable.Rows[i]["QUANTITY_UNIT"]; double YEAR_HOUR = double.Parse(dataTable.Rows[i]["YEAR_HOUR"].ToString()); double YEAR_RATE = double.Parse(dataTable.Rows[i]["YEAR_RATE"].ToString()); for (int j = i+1; j < dataTable.Rows.Count; j++) { if (dataTable.Rows[i]["ID"].Equals(dataTable.Rows[j]["ID"])) { //累计年运行时间和年利用率 YEAR_HOUR += double.Parse(dataTable.Rows[j]["YEAR_HOUR"].ToString()); YEAR_RATE += double.Parse(dataTable.Rows[j]["YEAR_RATE"].ToString()); //删除该重复行 dataTable.Rows.RemoveAt(j); j--;//若删除了重复行,则j重新计算 } } dr["YEAR_HOUR"] = YEAR_HOUR; dr["YEAR_RATE"] = YEAR_RATE; dataTable2.Rows.Add(dr); }
|