c# - 来自先前结果的 LINQ 条件
问题描述
我正在尝试编写查询以通过 db 的 id 获取用户(id 来自列表)和第二个查询以获取第一个结果查询的组。
List<Guid> UsersID;
var users = await db.users.Where(user => UsersID.Any(i => i == user.Id)).ToListAsync();
var groups = await db.groups.Where(g => users.Any(x => x.IdGroup == g.Id)).ToListAsync();
第一个结果很好,但在第二个查询中我遇到了这样的错误: System.InvalidOperationException: The LINQ expression DbSet.Where(r => users_0.Any(x.IdGroup == r.Id). 无法翻译。要么在一个可以翻译的查询中重写查询,或者通过插入对 AsEnumerable、AsAsyncEnumerable、ToList 或 ToLisyAsync 的调用来显式切换客户端评估我正在尝试重写,但我不知道“如何”。
解决方案
尝试将组 ID 选择到本地集合中并使用Contains
:
var groupIDs = users.Select(x => x.IdGroup).ToList();
var groups = await db.groups.Where(g => groupIDs.Contains(g.Id)).ToListAsync();
推荐阅读
- c++ - C++ helloworld 程序的几个错误
- javascript - 来自 JSON 的 d3 多线图
- sql - 如果值为 true,则获取列名
- python - 在重新训练的初始阶段使用批处理请求
- java - 将片段添加到 xml 会使我的应用程序崩溃 - 如何解决这个问题?
- python - 如何开发 python 脚本来运行 .txt 文件中的书面命令?
- python - 使用 Scrapy 登录失败抓取 ASP.net 网站
- java - 在 Maven 站点部署期间生成 JavaDocs 时,抛出 MalformedInputException 错误
- networking - Kubernetes:为不同的节点运行不同的 CNI 驱动程序?
- c++ - 使用 popen() 时,bash 脚本不返回返回码以调用 c++ 程序