2013-02-23 73 views
0

我對使用Linq對dbContext有困難,獲取子對象的子對象的集合具有特定最高值的對象的計數。獲取子對象集合的子對象

我有類Request,Event,User。我的簡單對象圖是這樣的: -

Request      Event     User 
    |        |      |-> Username 
    |-> EventsCollection   |-> Description 
    |-> User      |-> WhenDone 

我敢肯定,領域模型可以利用當前結構 而變化,但不管,我要的是請求數量的特定用戶,其中數最近的事件有特別的描述。

我最初以爲像下面這樣會給我,我上運行此尋找

value = _db.Requests.Where(r => r.User.UserName.Equals("username") && r.Events.OrderByDescending(e => e.WhenDone).First().Description.Equals("description")).Count(); 

但是值我得到一個錯誤「第一」只能作爲最後的查詢操作改變它,我得到其他錯誤,如不支持的方法等

我猜我應該使用子查詢,但一直沒有能夠得到正確的語法。

任何指針有用的資源或建議的解決方案將是非常讚賞

回答

1

嘗試是這樣的:

int count = _db.Requests.Where(r => r.User.UserName == "username") 
       .Select(r => 
        r.Events.OrderByDescending(e => e.WhenDone).FirstOrDefault()) 
       .Count(r => r != null && r.Description == "description"); 
+0

點上,工作第一次,正是我在後!謝謝! – Bryan 2013-02-23 19:15:46