我很难将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'只能用作最终查询操作更改它我得到其他错误,如不支持的方法等。
我猜我应该使用子查询但是还没有能够正确理解语法。
非常感谢任何指向有用资源或建议解决方案的指示
答案 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");