如何在 C# 中通过表达式构建动态查询

How to build dynamic query by expression in c#

首先,我有一个如下所示的变量:

List<string> values;

现在我需要构建如下查询条件:

Expression<Func<docinstance, bool>> filter = d=>d.values.any(o=>o.value==values[0]||o.value==value[1]||.....)

因为我不知道变量值有多少项,所以如何建立查询条件

里面可以再用Any

d => d.values.Any(o => values.Any(x => x == o.value))

您可以使用 Contains:

d => d.values.Any(o => values.Contains(o.value))

Documentation

DbContext class of EF has a method Set<TEntity>() which return type is DbSet<TEntity> which implements Queryable interface 将所有查询方法作为扩展方法。

最后你的查询表达式被翻译成 SQL 然后执行。这为您提供了所需的功能,以便您可以组合查询方法并构建动态表达式。