获取子对象集合的子对象

时间:2013-02-23 15:22:48

标签: linq linq-to-entities

我很难将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();

然而,在运行此操作时,我收到错误' First'只能用作最终查询操作更改它我得到其他错误,如不支持的方法等。

我猜我应该使用子查询但是还没有能够正确理解语法。

非常感谢任何指向有用资源或建议解决方案的指示

1 个答案:

答案 0 :(得分: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");