【问题标题】:Problem in Search From One List in Another List in Ef .Net Core在 Ef .Net Core 中从另一个列表中的一个列表中搜索的问题
【发布时间】:2021-10-29 19:50:41
【问题描述】:
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( 内部:DbSet(), outerKeySelector: p => EF.Property(p, "FK_Group"), innerKeySelector: g => EF.Property(g, "PK_Group"), resultSelector: (o, i) => new TransparentIdentifier( 外 = o, 内 = 我 )) .Where(p => p.Inner.IsDisplay) .Count(p => __groupId_0 .Any(g => (g ?? "").Equals((object)(p.Outer.FK_Group ?? 0) + "")))' 无法翻译。以可翻译的形式重写查询,或通过插入对“AsEnumerable”、“AsAsyncEnumerable”、“ToList”或“ToListAsync”的调用显式切换到客户端评估。

【问题讨论】:

  • p.FK_Group 是什么数据类型?看起来它可以为空,如果是,则设置为整数值 0,但您正在将该值与字符串列表进行比较。如果 groupId 包含整数列表会怎样?
  • @PeterG 编译器本身会收到此错误。现在的问题是别的东西。帖子已更新

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


【解决方案1】:

带有本地集合的Any 不能转换为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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多