2015-02-23 47 views
0

我有這樣的查詢組特定行的水平EF查詢行數

var awards = from a in context.Awards 
      where a.TWID == employee.TWID 
      group a by a.AwardLevel; 

這給我的獎勵爲每個級別(1-4)什麼我想弄清楚如何從特定級別的獎項中提取計數。

ie: level1.count,level2.count etc. 

我知道這應該是一些簡單的lambda表達式,但我只是不能得到它。

UPDATE我正在尋找一種方法寫4次不同的查詢。例如:

var level1 = awards.Level[0] 
var level2 = awards.Level[1] 

回答

3

嘗試:

var awards = from a in context.Awards 
      where a.TWID == employee.TWID 
      group a by a.AwardLevel into award 
      select new 
      { 
       AwardLevel = award.Key, 
       Count = award.Count() 
      }; 

更新基於新的問題:

var awards = (from a in context.Awards 
       where a.TWID == employee.TWID 
       group a by a.AwardLevel into award 
       select new 
       { 
        AwardLevel = award.Key, 
        Count = award.Count() 
       }).ToDictionary(t => t.AwardLevel, t => t.Count); 
+0

謝謝您的回答,但我正在尋找一種方法不寫4種不同查詢。例如:var level1 = awards.Level [1] ... – 2015-02-23 06:31:53

+0

@JohnSwaringen你是什麼意思?你的意思是你想旋轉你的結果嗎?嚴格地說,它不完全可能(你要求的)作爲C#是一種嚴格的類型語言,並且每個變量都需要聲明。如果您擔心數據庫調用的次數,請不要......這應該只能進行一次數據庫調用。 – Aron 2015-02-23 06:49:16

+0

@John Swaringen:看到我的更新的答案,看看它是否回答你的問題(我不確定是否理解你的意思) – 2015-02-23 08:30:58