读书人

急 linq 分组 有关问题

发布时间: 2012-05-16 11:12:12 作者: rapoo

在线等 急急急 linq 分组 问题
急急急 帮忙看看

C# code
this.dailyRevenueList = //(from p in                           (from p in dc.Sales                            join sd in dc.SaleDetails on p.GUID equals sd.MasterGUID                            join ch in dc.Checks on p.GUID equals ch.MasterGUID into ch_table                            from ch in ch_table.DefaultIfEmpty()                            join c in dc.Customers on p.CustomerGUID equals c.GUID into c_table                            from c in c_table.DefaultIfEmpty()                            join u in dc.Users on p.MarkerUserGUID equals u.GUID into u_table                            from u in u_table.DefaultIfEmpty()                            where p.DateTime >= dateTimeFrom && p.DateTime <= dateTimeTo && p.IsApproved == true                            select new DailyRevenueViews                            {                                GUID = p.GUID,                                No = p.No,                               // DateTime = p.DateTime,                                CustomerName = c.Name,                                CustomerTaxNo = c.TaxNo,                                //金额=销售单价*销售数量*实际折扣                                Amount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => t.UnitPrice * t.Quantity * t.DiscountRateFact),                                                                //税额=(销售含税单价-销售单价)*销售数量*实际折扣                                TaxAmount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => (t.UnitPriceTax - t.UnitPrice) * t.Quantity * t.DiscountRateFact),                                //应收金额                                TotalAmount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => t.UnitPriceTax * t.Quantity * t.DiscountRateFact),                               //现金收款                                CashRevenue = p.Receipt,                                //支票/转账/饭票收款                                CheckRevenue = dc.Checks.Where(t => t.MasterGUID == p.GUID && t.IsCashed == true).Sum(t => t.Amount),                                //CheckRevenue =ch_table.Where(t=>t.IsCashed==true).Sum(t=>t.Amount),                                //合计收款                                TotalRevenue = 0,                                // 发票                                RelationNo1 = p.InvoiceGUID != null ? dc.Invoices.Where(t => t.GUID == p.InvoiceGUID).FirstOrDefault().No : "",                                // 送货单                                RelationNo2 = p.WaybillGUID != null ? dc.Waybills.Where(t => t.GUID == p.WaybillGUID).FirstOrDefault().No : "",                                //IsApproved = p.IsApproved,                                //IsClose = p.IsClosed,                                Remark = p.Remark,                                MarkerUser = u.Name,                                                       }).Distinct().ToList();                                                      

此时查询结果

我用MarkerUser 分组
C# code
this.dailyRevenueList = (from p in                           (from p in dc.Sales                            join sd in dc.SaleDetails on p.GUID equals sd.MasterGUID                            join ch in dc.Checks on p.GUID equals ch.MasterGUID into ch_table                            from ch in ch_table.DefaultIfEmpty()                            join c in dc.Customers on p.CustomerGUID equals c.GUID into c_table                            from c in c_table.DefaultIfEmpty()                            join u in dc.Users on p.MarkerUserGUID equals u.GUID into u_table                            from u in u_table.DefaultIfEmpty()                            where p.DateTime >= dateTimeFrom && p.DateTime <= dateTimeTo && p.IsApproved == true                            select new DailyRevenueViews                            {                                GUID = p.GUID,                                No = p.No,                               // DateTime = p.DateTime,                                CustomerName = c.Name,                                CustomerTaxNo = c.TaxNo,                                //金额=销售单价*销售数量*实际折扣                                Amount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => t.UnitPrice * t.Quantity * t.DiscountRateFact),                                                                //税额=(销售含税单价-销售单价)*销售数量*实际折扣                                TaxAmount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => (t.UnitPriceTax - t.UnitPrice) * t.Quantity * t.DiscountRateFact),                                //应收金额                                TotalAmount = dc.SaleDetails.Where(t => t.MasterGUID == p.GUID).Sum(t => t.UnitPriceTax * t.Quantity * t.DiscountRateFact),                               //现金收款                                CashRevenue = p.Receipt,                                //支票/转账/饭票收款                                CheckRevenue = dc.Checks.Where(t => t.MasterGUID == p.GUID && t.IsCashed == true).Sum(t => t.Amount),                                //CheckRevenue =ch_table.Where(t=>t.IsCashed==true).Sum(t=>t.Amount),                                //合计收款                                TotalRevenue = 0,                                // 发票                                RelationNo1 = p.InvoiceGUID != null ? dc.Invoices.Where(t => t.GUID == p.InvoiceGUID).FirstOrDefault().No : "",                                // 送货单                                RelationNo2 = p.WaybillGUID != null ? dc.Waybills.Where(t => t.GUID == p.WaybillGUID).FirstOrDefault().No : "",                                //IsApproved = p.IsApproved,                                //IsClose = p.IsClosed,                                Remark = p.Remark,                                MarkerUser = u.Name,                                                      // }).Distinct().ToList();                            })                            group p by p.MarkerUser into g                            select new DailyRevenueViews                            {                                Amount = g.Sum(p => p.Amount),                                TaxAmount = g.Sum(p => p.TaxAmount),                                TotalAmount = g.Sum(p => p.TotalAmount),                                CashRevenue = g.Sum(p => p.CashRevenue),                                CheckRevenue = g.Sum(p => p.CheckRevenue),                                TotalRevenue = g.Sum(p => p.TotalRevenue),                                MarkerUser = g.Key                            }).Distinct().ToList(); 



后 查询结果为

查询金额 与前边查询对不上了 请大家帮我看看 分组时 哪里错了 分组前 总金额 为582.56 分组后金额 成了 11515.35

[解决办法]
。。。己经解决了啊,解决就好,恭喜LZ~~
估计就是自己一着急就看不出错误在哪了,我刚一开始也这样~~

读书人网 >C#

热点推荐