LINQ 分组 总结

实现:

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值