Linq Demo1

1.LinqToSql 多个字段groupBy 并添加总计列:
using (TravelBillEntities travelBill = new TravelBillEntities()) {
                var accountBill = travelBill.AccountBill.AsQueryable<AccountBill>();
                var payChannel = travelBill.PayChannel.AsQueryable<PayChannel>();
                EnumPayMethod etmp = (EnumPayMethod)int.Parse( PayMethodChooser1.PayMethod );
                if (etmp != EnumPayMethod.Unknown) {
                    int paymethodId = (int)etmp;
                    payChannel = payChannel.Where( t => t.PayMethod.PayMethodId == paymethodId );
                    }
                var query = from bill in accountBill
                            join channel in payChannel
                            on bill.PayChannelId equals channel.PayChannelId
                            group bill by new {
                                channel.PayChannelName,
                                channel.PayMethod.PayMethodName,
                                bill.Business.BusinessName,
                                bill.SettleStatus
                            }
                                into bc
                                select new {
                                    支付通道 = bc.Key.PayMethodName,
                                    借方 = bc.Sum( t => t.CreditAmount ),
                                    贷方 = bc.Sum( t => t.DebitAmount ),
                                    支付方法 = bc.Key.PayMethodName,
                                    交易类型 = bc.Key.BusinessName,
                                    结算状态 = bc.Key.SettleStatus,
                                    通道手续费 = bc.Sum( t => t.ChannelPayCost ),
                                    会员手续费 = bc.Sum( t => t.CustomerPayCost )
                                };
                var dataList = query.ToList();
                dataList.Add( new {
                    支付通道 = "总计",
                    借方 = (dataList.Sum( t => t.借方 )),
                    贷方 = (dataList.Sum( t => t.贷方 )),
                    支付方法 = string.Empty,
                    交易类型 = string.Empty,
                    结算状态 = default( int ),
                    通道手续费 = (dataList.Sum( t => t.通道手续费 )),
                    会员手续费 = (dataList.Sum( t => t.会员手续费 )),
                } );
                e.Result = dataList;
                }
2.

 LinqToSql使用小结

你可能感兴趣的:(LINQ)