2012-05-03 47 views
0

有我使用LINQ与MAX(),并加入

  var renewalQuery = from r in crnnsupContext.Renewals 
           from w in crnnsupContext.WorkPlaces 
           join p in crnnsupContext.ProvStates on p.ProvinceStateID equals r.EmployerProvState 
           where r.RegNumber == _username && r.PlaceOfWork == w.WorkID 
           select r; 

LINQ的声明有一个r.RenewalYear,我想获得最新的一年,所以我想是这样

   var renewalQuery = from r in crnnsupContext.Renewals 
           group r by r.RenewalYear into g 
           from w in crnnsupContext.WorkPlaces 
           join p in crnnsupContext.ProvStates on p.ProvinceStateID equals r.EmployerProvState 
           where r.RegNumber == _username && r.PlaceOfWork == w.WorkID 
           select g.max(r.RenewalYear); 

显然这不起作用,有没有人知道这个正确的语法?非常感谢

+0

你希望得到只回来找你,或者是历年确定的今年最新的最新RenewalYear ? – tmesser

回答

0

选择一年,然后在使用MAX():

var renewalQuery = (from r in crnnsupContext.Renewals 
           group r by r.RenewalYear into g 
           from w in crnnsupContext.WorkPlaces 
           join p in crnnsupContext.ProvStates on p.ProvinceStateID equals r.EmployerProvState 
           where r.RegNumber == _username && r.PlaceOfWork == w.WorkID 
           select r.RenewalYear).Max(); 
+0

有一个错误“名称'p'不在等于左边的范围内”,除此之外是否只有获得RenewalYear?我实际上想用最新的RenewalYear – pita

+2

@pita获得整个记录,我认为你的查询是有效的,你只需要最大年份 – Habib

+0

@pita - 它不在左边范围内,因为它是你加入的东西所以它属于右边:'from w in ... workPlaces join p in ... r.EmployerProvState上的ProveStates等于p.ProvinceStateID' –