首页 > 解决方案 > 在 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”的调用显式切换到客户端评估。

标签: c#list.net-coreentity-framework-core

解决方案


Anywith 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();

推荐阅读