2012-05-03 101 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' –