2017-06-05 110 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

工作正常。谢谢。 –