【发布时间】:2020-08-16 20:40:37
【问题描述】:
我有一个字符串参数,它根据Split(',') 操作的结果分成多个搜索过滤器。我想选择标题字段包含任何搜索过滤器
我希望以下 LINQ 能够工作
string[] filters = param.Split(',');
var query = await
(from t in this.Context.Persons
from f in filters.Where(f => t.Title.Contains(f))
select t).ToListAsync();
但是执行查询时出现以下错误:
Processing of the LINQ expression 't => __filters_0
.Where(f => t.Title.Contains(f))' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core.
感谢任何帮助。
【问题讨论】:
-
您必须使用谓词构建器来构建带有
or谓词的查询。旁注:查询看起来有点奇怪,您将Persons乘以匹配关键字的数量。 -
谢谢@GertArnold - 你提到的链接被证明是有用的。 LinqKit 对我有用,但是我最终在 IQueryable
上实现了一个通用的 WhereAny 扩展方法,如此处所述github.com/dotnet/efcore/issues/10834
标签: sqlite linq asp.net-core entity-framework-core