如何将给定T-SQL代码转换为对应的Lambda表达式?
对应的Lambda表达式实现
你可以用两种方式实现和原T-SQL逻辑完全一致的Lambda表达式:
方式1:使用Any直接关联查询
这种写法会被EF Core转换为与原SQL结构近似的子查询:
_context.Groups.Where(g => _context.GroupUsers.Any(gu => gu.UserId == userId && gu.GroupId == g.Id))
方式2:先获取匹配的GroupId集合,再用Contains筛选
这种写法先提取当前用户所属的GroupId列表,再通过Contains实现IN查询逻辑:
// 提取当前用户对应的所有GroupId var userGroupIds = _context.GroupUsers .Where(gu => gu.UserId == userId) .Select(gu => gu.GroupId); // 筛选出属于该用户的群组 var targetGroups = _context.Groups.Where(g => userGroupIds.Contains(g.Id));
两种写法最终生成的SQL执行逻辑和你提供的T-SQL完全一致,均可实现“查询指定用户所属的全部群组”的需求。
内容的提问来源于stack exchange,提问作者Hosein Ghasemi
相关产品推荐
相关产品推荐

