表(这里是指C#中DataTable这种数据)结构(一共四列,Load Plan#、ID/Style、CBM、KGS)及数据
Load Plan# ID/Style CBM KGS
REF111 54836099 1.500 0.500
REF111 1.500 0.500
54836099 2.000 1.000
54836099 1.500 0.500
期待结果:
Load Plan# ID/Style TotalCBM TotalKGS
REF111 54836099 1.500 0.500
REF111 1.500 0.500
54836099 3.500 1.500
说明:1 按Load Plan# 和 ID/Style 两列分组后,对CBM和KGS两列求和。
2 Load Plan# 和 ID/Style 两列可以有空值,空值和空值被视为相当(第三列和第四列分到一组)。
3 Load Plan# 这个列名中存在空格符(一共10个字符),即Load Plan#(十个字符)不是LoadPlan#(九个字符)。
由于第2个和第3个条件,实现起来总是有些错误。 麻烦大家给个思路,有测试代码更好,谢谢。
的datatable是从数据库中读出来的吧?
为啥不直接通过sql来实现呢
准确说,Datatable中的数据第一阶段是通过Sql server处理过,然后第二阶段在C#中使用System.Data库处理后产生的数据保存在DataTable(正如在问题中所述),最后需要对DataTable中的数据分组,产生的数据格式才符合规范,返回给客户端。在System.Linq库中是有GroupBy方法的,但是由于第2、3个条件的存在,发现C#不能很好的能解决这两个问题,这也是我提这个问题的原因