Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在LINQ Where子句中查询EF6集合属性?_C#_.net_Entity Framework_Entity Framework 6 - Fatal编程技术网

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)