2
我一直在翻譯我的程序在過去兩天使用實體框架6。大多數情況下,我通過簡單的CRUD操作就可以解決這個問題。今天我遇到了一個障礙。我試圖轉換;試圖使用組獲得與Linq的兩列上的最大值
Using SQLSERVER_Connection As New SqlConnection(GlobalVariables.SQLServer_Login_Details)
Using SQLCommand As New SqlCommand
Dim Command As New Text.StringBuilder
Command.AppendLine("SELECT TOP(1) EarningsYear AS PayYear, Max(EarningsAmt) AS EarnAmt, Max(Hours) AS HRS")
Command.AppendLine("FROM interview_payroll")
Command.AppendLine("GROUP BY CLIENTCODE, EarningsYear, SSN")
Command.AppendLine("HAVING CLIENTCODE = @CLIENTCODE AND SSN = @SSN ORDER BY EarningsYear DESC;")
SQLCommand.CommandText = Command.ToString
SQLCommand.Connection = SQLSERVER_Connection
SQLCommand.Parameters.Add("@CLIENTCODE", SqlDbType.VarChar).Value = sCLIENTCODE
SQLCommand.Parameters.Add("@SSN", SqlDbType.VarChar).Value = txtSSN.Text
SQLSERVER_Connection.Open()
Using Reader As SqlDataReader = SQLCommand.ExecuteReader()
While Reader.Read()
If Not IsDBNull(Reader("PayYear")) Then txtPayrollSourceDate.Text = CStr(Reader("PayYear"))
If Not IsDBNull(Reader("EarnAmt")) Then txtPayrollErnAmt.Text = CStr(Reader("EarnAmt"))
If Not IsDBNull(Reader("HRS")) Then txtPayrollHRS.Text = CStr(Reader("HRS"))
End While
End Using
SQLSERVER_Connection.Close()
End Using
End Using
進入Linq。
我還有;
Using DB As New wotcEntities
Dim Reader = From payroll In DB.interview_payroll
Where payroll.CONTROL = CONTROL And payroll.CLIENTCODE = sCLIENTCODE
Group payroll By payroll.CLIENTCODE, payroll.EarningsYear, payroll.SSN Into GPayroll = Group
End Using
但我似乎無法跳過在賺錢和小時中獲得MAX的障礙。我有這個程序叫'LINQ - 樣本查詢',但它顯示MAX查詢爲;
Public Sub LinqToSqlCount08()
Dim latestHire = Aggregate emp In db.Employees _
Into Max(emp.HireDate)
Console.WriteLine(latestHire)
End Sub
這是行不通的,如果我想包括PayYear。
我可以抓住每個部分作爲單獨的查詢,但這並不正確。
如何正確執行此操作?