在线等 急急急 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~~
估计就是自己一着急就看不出错误在哪了,我刚一开始也这样~~