日期:2014-05-17  浏览次数:20519 次

linq 分组求和
 var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code}) ;
我要分组并求trans_fee的和,我怎么再把sum(trans_fee)加上去,高人指点
------最佳解决方案--------------------
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code}).Select(g=>new{trans_feeSum=g.Sum(x=>x.trans_fee),g.customer_name,g.sales,g.customer_code});
------其他解决方案--------------------
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code})
.Select(g=>new{trans_feeSum=g.Sum(x=>x.trans_fee)} ;
------其他解决方案--------------------
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code}).Select(g=>new{trans_feeSum=g.Sum(x=>x.trans_fee)});

            foreach (var qs_ in qs)
            {
                Response.Write(qs_.trans_feeSum+"--"+qs_.);//这个只有trans_feeSum,没有customer_name这些
            }
------其他解决方案--------------------
引用:
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code}) ;
我要分组并求trans_fee的和,我怎么再把sum(trans_fee)加上去,高人指点


是分组后的和,还是分组每一组的和
------其他解决方案--------------------
是每一组的和,不好意思,没有表达清楚,谢谢
------其他解决方案--------------------
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code})
 .Select(g=>new{
customer_name=g.Key.customer_name,
customer_code=g.Key.customer_code,
sales=g.Key.sales,
trans_feeSum=g.Sum(x=>x.trans_fee)
} ;
 
如果觉得自己表达不清楚,可以举个例子说明一下,最清楚
------其他解决方案--------------------
好的,谢谢,例子如下:

客户编号       客户      业务        运费(总计)

004              A          小刘        400

003              C            小张       300

001              R            小明       3500

很重要的一点,是想以有运费最早的第一笔单向后排序
比如上边004 的最早的一笔运费产生在2012-01-20
003 产生在2012-02-02
01   产生在2012-03-01
不知道分组,求和排序能弄到一块去不?或有什么方法可以解决,谢谢!       
------其他解决方案--------------------
我是以下边的来解决分组求和的,但排序不知道怎么弄了
var qs = SNP.GroupBy(x => new { x.customer_name, x.sales, x.customer_code}).Select(g => new { trans_feeSum = g.Sum(x => x.trans_fee), g.Key.customer_code, g.Key.customer_name, g.Key.sales});