我有 2 個資料表,正在嘗試使用左外連接來匯總其中的資料。加入可以正常使用此代碼
Dim Journal = From entries In dt.AsEnumerable()
Join inccodes In dtGL.AsEnumerable()
On entries.Field(Of String)("GLCode") Equals inccodes.Field(Of String)("GLCode")
Group By keys = New With {Key .IncomeCode = entries.Field(Of String)("GLCode"), Key .IncomeDesc = .inccodes.Field(Of String)("GLCodeDesc")}
Into ChargeSum = Group, sm = Sum(entries.Field(Of Decimal)("Amount"))
Where sm <> 0
Select New GL_Journal With {.IncomeCode = keys.IncomeCode, .IncomeDesc = keys.IncomeDesc, .LineAmount = sm}
`
但是,因為我真的想要一個左外連接,所以我想使用組連接而不是連接。一旦我將加入更改為組加入組中的代碼,在“.inccodes.field(Of String)(“GLCodeDesc”)”處的“.inccodes”突出顯示錯誤“'inccodes'不是'匿名型別'”我已經查看了很多關于 Group By 和 Group Join 的檔案,但是關于它們的資訊很少。有任何想法嗎?使用方法語法我會有更多選擇/成功嗎?
uj5u.com熱心網友回復:
如果我嘗試使用左外連接重現您的查詢,我將執行以下操作:
Dim dt As New DataTable
dt.Columns.Add("GLCode", GetType(String))
dt.Columns.Add("Amount", GetType(Decimal))
dt.Rows.Add("111", 3251.21)
dt.Rows.Add("222", 125.79)
dt.Rows.Add("999", 10000)
Dim dtGL As New DataTable
dtGL.Columns.Add("GLCode", GetType(String))
dtGL.Columns.Add("GLCodeDesc", GetType(String))
dtGL.Rows.Add("111", "a")
dtGL.Rows.Add("222", "b")
dtGL.Rows.Add("333", "c")
Dim Journal = From entries In dt.AsEnumerable()
Group Join inccodes In dtGL.AsEnumerable()
On entries.Field(Of String)("GLCode") Equals inccodes.Field(Of String)("GLCode")
Into Group
From lj In Group.DefaultIfEmpty()
Group By keys = New With {Key .IncomeCode = entries.Field(Of String)("GLCode"), Key .IncomeDesc = lj?.Field(Of String)("GLCodeDesc")}
Into ChargeSum = Group, sm = Sum(entries.Field(Of Decimal)("Amount"))
Select New With {.IncomeCode = keys.IncomeCode, .IncomeDesc = keys.IncomeDesc, .LineAmount = sm}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/419078.html
標籤:
上一篇:安卓開發入門(一)開發環境搭建
