2011-06-27 39 views
4

我有一個LINQ聲明我正在試圖弄清楚,所以也許會出現這種情況。我的目標是查詢一個表並加入另一個表以獲得計數。LINQ從加入組計數

地方
ID,顯示器

ProfilePlaces
ID,PlaceID,交流,聽到

基本上Places具有在一個ProfilePlaces一對多關係。我想獲得ProfilePlaces的編號爲SUMTalkHearTalkHearbit字段。

下面給我一個獨特的名單Places,所以我需要在TalkHear計數中添加。

var counts = from p in db.Places 
      join pp in db.ProfilePlaces on p.ID equals pp.PlaceID 
      group new { Place = p } by p.Display; 

我覺得這樣的事情,但沒有任何運氣

var counts = from p in db.Places 
      join pp in db.ProfilePlaces on p.ID equals pp.PlaceID 
      group new { Place = p, 
         Talk = pp.Count(t => t.Talk == true), 
         Hear = pp.Count(t => t.Hear == true) 
         } by p.Display; 

感謝您的幫助。

+0

聽==見面?是一個錯字? – naveen

+0

是的,已修復。對於那個很抱歉。 –

回答

10

你想做一個GROUP JOIN來獲得每個Place的計數。

var counts2 = from p in places 
       join pp in profilePlaces on p.ID equals pp.PlaceID into g 
       select new 
       { 
        Place = p, 
        CountMeet = g.Count(a => a.Meet), 
        CountTalk = g.Count(a => a.Talk) 
       }; 

這裏的文檔在不同MSDN加入:
http://msdn.microsoft.com/en-us/library/bb311040.aspx

+0

我相信這是解決方案。你將如何爲這個查詢添加一個WHERE條件? –

+0

我覺得選擇之前應該在哪裏。你想過濾什麼? – rsbarro

+0

我實際上有另一個'int'的集合,我檢查它是否存在。'colInts.Contains(pp.ID)' –