0

我在对 dbContext 使用 Linq 时遇到困难,无法获取子对象的子对象集合具有特定最高值的对象计数。

我有类请求,事件,用户。我的简化对象图是这样的:-

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' can only be used as a final query operation change it I get other errors such as unsupported method etc.

我猜我应该使用子查询,但无法正确使用语法。

任何指向有用资源或建议解决方案的指针将不胜感激

4

1 回答 1

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");
于 2013-02-23T18:06:00.857 回答