You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LINQ查询触发DbExpressionBinding输入表达式报错问题咨询

报错原因

  • 核心原因是EF/EF Core 执行IQueryable类型的LINQ查询时,无法将「ICollection类型导航属性的SelectMany(双from语法)+ 内存字符串数组的All判断」的组合逻辑翻译成合法的SQL表达式,触发了表达式绑定异常。
  • 额外需先确认代码变量名匹配:你提供的参数说明中数组名为motsCt、数据源为dtResult,但代码中写的是motsE和dtRe,变量名不匹配也可能引发运行时异常。

解决办法

方案1:小数据量场景,切换到内存LINQ执行

如果符合条件的数据量较小,可以先预加载导航属性后在内存中执行过滤,EF不需要翻译复杂表达式:

var a = dtResult.Include(q => q.Pro)
         .AsEnumerable()
         .Where(q => q.Pro.Any(p => motsCt.All(word => p.Title.Contains(word))))
         .ToList();

方案2:大数据量场景,改写逻辑适配EF翻译规则

motsCt.All(word => p.Title.Contains(word))等价于所有词都要满足匹配条件,可以拆解为多次Where判断,EF可顺利翻译为SQL:

var query = dtResult.AsQueryable();
foreach (var word in motsCt)
{
    query = query.Where(q => q.Pro.Any(p => p.Title.Contains(word)));
}
var a = query.ToList();

内容的提问来源于stack exchange,提问作者Coder-Meca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:18:03