如何在 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))
DbContext class of EF has a method Set<TEntity>() which return type is DbSet<TEntity> which implements Queryable interface 将所有查询方法作为扩展方法。
最后你的查询表达式被翻译成 SQL 然后执行。这为您提供了所需的功能,以便您可以组合查询方法并构建动态表达式。
首先,我有一个如下所示的变量:
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))
DbContext class of EF has a method Set<TEntity>() which return type is DbSet<TEntity> which implements Queryable interface 将所有查询方法作为扩展方法。
最后你的查询表达式被翻译成 SQL 然后执行。这为您提供了所需的功能,以便您可以组合查询方法并构建动态表达式。