繁体   English   中英

如何在LINQ Where子句中查询EF6集合属性?

[英]How can I query an EF6 collection property within a LINQ Where clause?

我正在尝试使用以下查询从数据库中提取组模型:

var group = await _context.Groups
    .Where(g => g.ID == dto.GroupID && g.Users.Contains(user))
    .FirstOrDefaultAsync();

dto是通过Web API发送的请求DTO, user是ASP.NET IdentityUser。

由于Entity Framework无法将用户转换为常量,因此将引发异常。 有什么办法可以实现这个查询?

我在以下代码中有另一种选择:

var reportingGroup = user.Groups
    .FirstOrDefault(rg => dto.GroupID == rg.ID);

但我想避免在用户的延迟加载的Groups集合上进行同步查找。

更正确的做法是按Id匹配用户,而不是整个User对象。 所以考虑改变

g.Users.Contains(user)

g.Users.Any(u=>u.Id==user.Id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM