2010-07-26 77 views
2

我想實現一個包含子查詢本身包括分組的查詢。實體框架LINQ - 與分組的子查詢

我從基礎的回答我的代碼這個question

代碼的目的是爲了執行基於電子郵件地址的「人」表的簡單重複數據刪除,並返回最新的人行。

var innerQuery = (from p in db.Person 
           join r in db.Registration on p equals r.Person 
           join e in db.EventDetail on r.EventDetail equals e 
           where e.Client.ClientID == clientID 
           group p by p.Email into g 
           select g.Max(p => p.PersonID)); 

var query = (from p2 in db.Person where innerQuery.Contains(p2.PersonID) select p2); 

當查詢試圖執行,我得到了以下錯誤消息:

LINQ到實體不承認 方法「布爾 包含[的Int32](System.Linq.IQueryable `1 [System.Int32], Int32)'方法,並且此方法不能將 轉換爲存儲表達式。

我測試了innerquery,它只是按照預期返回一個int列表,但查詢失敗,出現上面的消息。

任何幫助非常感謝。

回答

2

是不是query只是一個加入?

var query = from p2 in db.Person 
      join iq in innerQuery on p2.PersonID equals iq 
      select p2; 

我不知道= iq一部分,但我不經常使用的語法遺憾 - 在其他的形式,它會

.Join(innerQuery, p2 => p2.PersonId, iq => iq, (p2, iq) => p2); 

的加入和選擇。

+0

工作,如果調整爲:在db.Person 從P2 上p2.PersonID在innerQuery加入智商等於智商 選擇P2 感謝。 – ptutt 2010-07-26 08:52:31

+0

D'oh。修正了,謝謝。 – Rup 2010-07-26 08:54:47