1 #region table去重复求和
2 var query = dt.Rows.Cast<DataRow>()
3 .OrderByDescending(n => n["OPERATION_TIME"])
4 .GroupBy(
5 s => new
6 {
7 MATERIAL_CODE = Convert.ToString(s["MATERIAL_CODE"]),
8 MATERIAL_NAME = Convert.ToString(s["MATERIAL_NAME"]),
9 STORAGE_STYLE = Convert.ToString(s["STORAGE_STYLE"]),
10 STORAGE_SIGN = Convert.ToString(s["STORAGE_SIGN"])
11 })
12 .Select(group => new
13 {
14 group.Key.MATERIAL_CODE,
15 group.Key.MATERIAL_NAME,
16 group.Key.STORAGE_STYLE,
17 group.Key.STORAGE_SIGN,
18 REMARK = group.First().Field<string>("REMARK"),
19 OPERATION_TIME = group.First().Field<string>("OPERATION_TIME"),
20 STORAGE_NUM = group.Sum(x => Convert.ToInt32(x["STORAGE_NUM"]))
21 });
22
23 if (query.ToList().Count > 0)
24 {
25 dtNew = dt.Clone();
26 query.ToList().ForEach(q =>
27 {
28 DataRow drNew = dtNew.NewRow();
29 drNew["MATERIAL_CODE"] = q.MATERIAL_CODE;
30 drNew["MATERIAL_NAME"] = q.MATERIAL_NAME;
31 drNew["REMARK"] = q.REMARK;
32 drNew["STORAGE_NUM"] = q.STORAGE_NUM;
33 drNew["STORAGE_STYLE"] = q.STORAGE_STYLE;
34 drNew["OPERATION_TIME"] = q.OPERATION_TIME;
35 drNew["STORAGE_SIGN"] = q.STORAGE_SIGN;
36 dtNew.Rows.Add(drNew);
37 });
38 }
39 #endregion