class ProductFilter{
public string Name { get; set; }
.
.
.
}
我有一个产品搜索表单,这个表单的结果是ProductFilter。在ProductFilter类中,有一个属性存储要搜索的产品的名称。生成一个动态查询的最佳方法是什么?只有当ProductFilter。名称不是空的,也不是空的?我的第一个想法是创建SqlExpression对象,并根据条件添加或不添加额外的Where条件,但SqlExpression不能实例化。
您可以使用泛型sql代码与参数和检查,查询参数是否为空,如
select * from MyTable where (Name = @name or @name is null)
您可以像这样在OrmLite中链接SqlExpressions
:
var exp = Db.From<ProductFilter>();
if (!productFilter.Name.IsNullOrEmpty())
exp = exp.Where(pf => pf.Name.Contains(productFilter.Name));
这样,您就可以根据您选择的过滤器POCO中的任何标准动态构建查询。