首页 > 解决方案 > 来自先前结果的 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 的调用来显式切换客户端评估我正在尝试重写,但我不知道“如何”。

标签: c#entity-frameworklinqasp.net-core

解决方案


尝试将组 ID 选择到本地集合中并使用Contains

var groupIDs = users.Select(x => x.IdGroup).ToList();
var groups = await db.groups.Where(g => groupIDs.Contains(g.Id)).ToListAsync();

推荐阅读