dataTable中合并行

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:04   1834   0

需求:由于数据库查询时有字段要求,不能将某些重复值的行合并,前端显示要求合并(合并两个字段值不一致,其他字段值一致的行,将不一致的两个字段累加)

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);
}

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP