2017-06-05 60 views
0

我有一個簡單的SQL查詢,但我不能將其轉換爲LINQ:Linq查詢使用條款和最大

select * from client_software where update_date in 
    (select max(update_date) AS UPDATE_DATE from client_software a 
     where a.client_code = client_software.client_code and 
      a.software_code = client_software.software_code) 

有人能幫忙嗎?

+0

能否請你給出答案試試嗎? – kblau

回答

0
var ans = from cs in client_software 
      where cs.update_date == (from a in client_software where a.client_code == cs.client_code && a.software_code == cs.software_code select a).Max(cs2 => cs2.update_date) 
      select cs; 

使用GROUP BY可能是在這種情況下更清晰:

var ans2 = from cs in client_software 
      group cs by new { cs.client_code, cs.software_code } into csg 
      from cs in csg 
      where cs.update_date == csg.Max(cs => cs.update_date) 
      select cs; 
+0

工作正常。謝謝。 –

0

能否請您試試這個:

var q = entity.client_software.Where(r => r.update_date.Value 
== entity.client_software.Where(u => u.client_code == r.client_code && 
u.software_code == r.software_code).Max(s => s.update_date)).ToList(); 
+0

工作正常。謝謝。 –