2010-05-24 89 views
1

我在將傳統SQL聚合查詢轉換爲LINQ時遇到困難。基本數據轉儲的工作原理是這樣:LINQ聚合/ SUM分組問題

Dim result = 
    (From i As Models.InvoiceDetail In Data.InvoiceDetails.GetAll 
    Join ih As Models.InvoiceHeader In Data.InvoiceHeaders.GetAll On i.InvoiceHeaderID Equals ih.ID 
    Join p As Models.Product In Data.Products.GetAll On i.ProductID Equals p.ID 
    Join pg As Models.ProductGroup In Data.ProductGroups.GetAll On p.ProductGroupID Equals pg.ID 
    Join gl As Models.GLAccount In Data.GLAccounts.GetAll On pg.GLAccountSellID Equals gl.ID 
    Where (gl.ID = GLID) 
    Select ih.Period,i.ExtendedValue) 

我需要真正地走出什麼是ih.Period(從1到12的值)和i.ExtendedValue對應的總價值。當我嘗試將ih分組時,我收到有關我超出作用域/上下文的錯誤,並且我不確定還有什麼其他解決方法。

回答

2

嘗試將其分解爲兩個不同的查詢以簡化操作。例如:

From result In 
    (From i As Models.InvoiceDetail In Data.InvoiceDetails.GetAll 
    Join ih As Models.InvoiceHeader In Data.InvoiceHeaders.GetAll On i.InvoiceHeaderID Equals ih.ID 
    Join p As Models.Product In Data.Products.GetAll On i.ProductID Equals p.ID 
    Join pg As Models.ProductGroup In Data.ProductGroups.GetAll On p.ProductGroupID Equals pg.ID 
    Join gl As Models.GLAccount In Data.GLAccounts.GetAll On pg.GLAccountSellID Equals gl.ID 
    Where (gl.ID = GLID) And (ih.FinancialYear = FinancialYear) 
    Select ih.Period, i.ExtendedValue) 
Group By result.Period Into Sum(result.ExtendedValue) 
+1

謝謝,那很好。 – Chrissi 2010-05-24 06:50:22

+1

這是晚餐。 – nathanchere 2010-08-12 02:15:51

+1

什麼是?餡餅? :P – Chrissi 2010-09-07 03:04:53