实现:
对DataTable 通过Order_ID进行分组,且 sum(PayMoney) ,有合并的加备注信息
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Data;
public
partial
class
sum : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
DataTable table =
new
DataTable();
table.Columns.Add(
"id"
,
typeof
(
int
));
table.Columns.Add(
"Order_ID"
,
typeof
(
string
));
table.Columns.Add(
"PayMoney"
,
typeof
(
decimal
));
table.Columns.Add(
"Remark"
,
typeof
(
string
));
DataRow row1 = table.NewRow();
row1[
"Order_ID"
] =
"201307101008123"
;
row1[
"PayMoney"
] =
"12"
;
row1[
"Remark"
] =
""
;
table.Rows.Add(row1);
DataRow row2 = table.NewRow();
row2[
"Order_ID"
] =
"201307101008124"
;
row2[
"PayMoney"
] =
"12"
;
row2[
"Remark"
] =
""
;
table.Rows.Add(row2);
DataRow row3 = table.NewRow();
row3[
"Order_ID"
] =
"201307101008123"
;
row3[
"PayMoney"
] =
"12"
;
row3[
"Remark"
] =
""
;
table.Rows.Add(row3);
DataRow row4 = table.NewRow();
row4[
"Order_ID"
] =
"201307101008123"
;
row4[
"PayMoney"
] =
"12"
;
row4[
"Remark"
] =
""
;
table.Rows.Add(row4);
var query = (from s
in
table.AsEnumerable()
group s by
new
{ t1 = s.Field<
string
>(
"Order_ID"
) } into m
select
new
{
Order_ID = m.Key.t1,
PayMoney = m.Sum(n => n.Field<
decimal
>(
"PayMoney"
)),
Remark = m.Count()>1?
"此单为"
+ m.Count() +
"笔合并"
:
""
}).ToList();
DataTable table2 = table.Clone();
int
i = 0;
foreach
(var item
in
query)
{
DataRow Row2 = table2.NewRow();
Row2[
"id"
]=++i;
Row2[
"Order_ID"
] = item.Order_ID;
Row2[
"PayMoney"
] = item.PayMoney;
Row2[
"Remark"
] =item.Remark;
table2.Rows.Add(Row2);
}
}
}