class ProductFilter{
public string Name { get; set; }
.
.
.
}
我有一个产品搜索表单,此表单的结果是ProductFilter。在ProductFilter类中,有一个属性存储要搜索的产品的名称。生成动态查询的最佳方法是什么,只有当ProductFilter.Name不为null且不为空时才在产品名称上添加条件?我的第一个想法是创建SqlExpression对象并基于条件添加或不添加其他条件,但SqlExpression无法实例化。
答案 0 :(得分:1)
您可以使用带有params的通用sql代码并检查,查询参数是否为null,如
select * from MyTable where (Name = @name or @name is null)
答案 1 :(得分:1)
您可以在OrmLite中链接SqlExpressions
,如下所示:
var exp = Db.From<ProductFilter>();
if (!productFilter.Name.IsNullOrEmpty())
exp = exp.Where(pf => pf.Name.Contains(productFilter.Name));
通过这种方式,您可以根据您选择的过滤器POCO中的任何条件动态构建查询。