使用EF来进行查询的一种方式

目前,做查询的时候,一般都是定义一个类,属性为查询条件。提交到对应的action后,判断对应的属性是否为空,为空,则用LINQ来组合条件。

但是这么处理,所使用的IF过多,代码的可读性就差了。

另外的一个思路是,首先定义一个class:

key表示对应实体的名称,value表示对应的值,ext表示表达式。

查询类定义如下,为了简单,只有两个属性:

主要是在给属性赋值的时候,判断对应的值是不是为空,如果不为空,则添加到对应的list中。

查询的时候,根据这个list,就可以得到所有非空的查询条件。ext为表达式,可以用LINQ支持的所有的函数。

再去查询的时候,就简单了。少了if的判断。

这种方法的不足:

1、对应的值都为string,需要改进

2、默认的条件为and,如果需要or的话,需要额外来处理

使用了微软的动态查询的一个文件,Dynamic.cs

原文地址:https://www.cnblogs.com/ajiebp1977/p/3465083.html