我对 Linq 和实体框架非常陌生。我正在尝试将 WCF RIA 服务创建到我正在创建的 LightSwitch 订单管理应用程序中。我已经使用 Linq 创建了 7 或 8 个查询(很头疼),但我成功了。现在我需要使用三个表创建一个按月获取 TotalSales 和 TotalExpenses 的查询:
DetailsVentes (SaleDetails) 组成:DateOfOrder、Quantity、UnitPrice、Total....等 DetailsAchat (PurchaseDetails) 组成相同字段 Charges (Expenses) 组成:DateOfExpense、ExpenseType、Cost....等
现在我想要一个查询来找到每月的净收入(收入=TotalSales-TotalPurchases-TotalExpenses)
我试过这个查询
Return From od In Me.Context.DetailsVentes
From od2 In Me.Context.DetailsAchats
From od3 In Me.Context.Charges
Group By Month = od.Vente.DateCommande.Month, Year = od.Vente.DateCommande.Year
Into g = Group
Select New TCR With {.Month = Month, .Year = Year,
.MonthYearString = Month & "/" & Year,
.TotalVentes = g.Sum(Function(s) (s.od.PrixUnitaire * s.od.Quantité)),
.TotalAchats = g.Sum(Function(s) (s.od2.PrixAchat * s.od2.Quantité)),
.TotalCharges = g.Sum(Function(s) (s.od3.Cout))}
其中 Vente 是销售(订单),DetailVentes 是 OrderDetails Achat 是采购,而 DetailAchat PurchaseDetail a Charge 是费用。
问题是我得到了奇怪的结果。所有值(TotalVentes、TotalAchats、TotalCharges)都乘以 13 !
例如,如果我在 2011 年 6 月的总销售额为 10 000 美元,则此查询返回 130 000 美元!
我真的被困了 4 天,试图获得正确的查询。
我再说一遍,我是 Linq 的新手:p
非常感谢你。
编辑:我尝试了@Jason 的建议,我这样做了:
Return From c In Me.Context.Charges
Join v In Me.Context.DetailsVentes On c.DateCharge.Month Equals v.Vente.DateCommande.Month And c.DateCharge.Year Equals v.Vente.DateCommande.Year
Join a In Me.Context.DetailsAchats On c.DateCharge.Month Equals a.Achat.DateCommande.Month And c.DateCharge.Year Equals a.Achat.DateCommande.Year
Group By month = c.DateCharge.Month, Year = c.DateCharge.Year
Into g = Group
Select New TCR With {.Month = month, .Year = Year, .MonthYearString = "", .TotalAchats = g.Sum(Function(c) (c.a.Quantité * c.a.PrixAchat)), .TotalCharges = 45000, .TotalVentes = 250000, .TCRSingle = 0}
结果仍然很奇怪(非常高)!任何我可以遵循的例子?
谢谢你。