c# - 在 Ef .Net Core 中从另一个列表中的一个列表中搜索的问题
问题描述
List<string> groupId = request.GroupId.Split(',').ToList();
ENTITIES.ProductGroup
.Where(p => p.IsDisplay)
.Where(p => p.FK_GroupNavigation.IsDisplay)
.Where(p => groupId.Any(g => g == (p.FK_Group ?? 0) + "")
.ToList();
request.GroupId 中"12,15"
的值与表中的值相同,但出现以下错误。
在 Ef Core 中,我想在另一个列表中搜索某个值,但它给出以下错误有什么问题?
TargetFramework=5.0
LINQ 表达式 'DbSet() .Where(p => p.IsDisplay) .LeftJoin( inner: DbSet(), outerKeySelector: p => EF.Property<Nullable>(p, "FK_Group"), innerKeySelector: g => EF.Property<Nullable>(g, "PK_Group"), resultSelector: (o, i) => new TransparentIdentifier<ProductGroup, Group>( Outer = o, Inner = i )) .Where(p => p.Inner. IsDisplay) .Count(p => __groupId_0 .Any(g => (g ?? "").Equals((object)(p.Outer.FK_Group ?? 0) + "")))' 无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。
解决方案
Any
with local collection 不能翻译为 SQL,请Contains
改用。还通过整数值比较整数,如果存在索引,查询将使用索引。
List<int> groupId = request.GroupId.Split(',').Slect(s => int.Parse(s)).ToList();
SGP_PRODUCT.ProductGroup
.Where(p => p.IsDisplay)
.Where(p => p.FK_GroupNavigation.IsDisplay)
.Where(p => groupId.Contains(p.FK_Group))
.ToList();
推荐阅读
- postgresql - 如何恢复已删除的数据对称 ds
- python - 当前不支持错误对象数组 Python
- ios - 只能解析一些 JSON 数据,语法问题?
- javascript - 按下按钮时每秒执行一次javascript函数
- javascript - 为什么在 React 中使用 setState?
- c# - 如何实现这个 mvc 过滤器属性?
- selenium - Selenium - 避免获取验证码
- c# - 如何在 Asp.Net Core 中做服务器端多步表单?
- linux-kernel - 如何在 OpenWrt 中为内核模块编写 makefile 以自动加载模块
- java - 将 JTable 转换为 JSON 时的数据顺序错误