C# 如何在LINQ Where子句中查询EF6集合属性?
我试图使用以下查询从数据库中提取组模型:C# 如何在LINQ Where子句中查询EF6集合属性?,c#,.net,entity-framework,entity-framework-6,C#,.net,Entity Framework,Entity Framework 6,我试图使用以下查询从数据库中提取组模型: var group = await _context.Groups .Where(g => g.ID == dto.GroupID && g.Users.Contains(user)) .FirstOrDefaultAsync(); dto是通过Web API发送的请求dto,而user是ASP.NET身份服务器 这会引发异常,因为实体框架无法将用户转换为常量。有没有办法实现这个查询 我在以下代码中有一个备选方案:
var group = await _context.Groups
.Where(g => g.ID == dto.GroupID && g.Users.Contains(user))
.FirstOrDefaultAsync();
dto
是通过Web API发送的请求dto,而user
是ASP.NET身份服务器
这会引发异常,因为实体框架无法将用户转换为常量。有没有办法实现这个查询
我在以下代码中有一个备选方案:
var reportingGroup = user.Groups
.FirstOrDefault(rg => dto.GroupID == rg.ID);
但我希望避免同步查找用户的lazy loaded Groups集合。更正确的做法是按
Id
匹配用户,而不是按整个user
对象匹配用户。所以考虑改变
g.Users.Contains(user)
到
我认为选项-
g.Users.Any(u=>u.Id==user.Id)
更正确。
g.Users.Any(u=>u.Id==user.Id)