经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# DataTable 去某几个字段相等的重复行,給入需要做叠加的字段名做数值叠加
来源:cnblogs  作者:Pazziz  时间:2018/10/16 9:40:43  对本文有异议

以下代码实现c#语言DataTable去某几个字段的重复行, 数值的叠加
filedNames : 去重字段名 数组
superFileds: 叠加字段名 数组

  1. /// <summary>
  2. /// 去重复并且叠加需要叠加的字段
  3. /// </summary>
  4. /// <param name="dt"></param>
  5. /// <param name="filedNames"></param>
  6. /// <returns></returns>
  7. public static DataTable DistinctSomeColumn (DataTable dt, string[] filedNames, string[] superFileds)
  8. {
  9. DataTable newDt = dt.Copy();
  10. string[] tArr = new string[filedNames.Length];
  11. for (int i = 0 ; i < dt.Rows.Count ; i++)
  12. {
  13. for (int k = 0 ; k < filedNames.Length ; k++)
  14. {
  15. tArr[k] = dt.Rows[i][filedNames[k]].ToString();
  16. }
  17. string[] tempArr = new string[filedNames.Length];
  18. for (int p = 0 ; p < newDt.Rows.Count && p != i ; p++)
  19. {
  20. for (int k = 0 ; k < filedNames.Length ; k++)
  21. {
  22. tempArr[k] = newDt.Rows[p][filedNames[k]].ToString();
  23. }
  24. bool flag = true;
  25. for (int k = 0 ; k < filedNames.Length ; k++)
  26. {
  27. if (!tArr[k].Equals(tempArr[k]))
  28. {
  29. flag = false;
  30. break;
  31. }
  32. }
  33. if (flag)
  34. {
  35. // 传入的参数每一项都相等, 而后叠加需要叠加的字段,而后保留叠加过后的一行
  36. float[] fArr = new float[superFileds.Length];
  37. for (int k = 0 ; k < superFileds.Length ; k++)
  38. {
  39. // 叠加的字段
  40. newDt.Rows[p][superFileds[k]] = (float.Parse(dt.Rows[i][superFileds[k]].ToString() == "" ? "0" : dt.Rows[i][superFileds[k]].ToString()) +
  41. float.Parse(newDt.Rows[p][superFileds[k]].ToString() == "" ? "0" : dt.Rows[p][superFileds[k]].ToString())).ToString("0.0000");
  42. }
  43. dt.Rows.RemoveAt(i);
  44. i--;
  45. }
  46. }
  47. }
  48. return newDt;
  49. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号