2013-02-23 75 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