使用C#3.5到VS 2008和亚音速2.2。 任何人都知道是否可以创建一个基本上在其中间有“IF”的亚音速查询,具体取决于传递的参数是否大于零。
例如,删除方法有两个传递的参数 - A和B.
我想要(伪代码)
之类的东西DELETE from Products
Where productId = A
if(B > 0)
{
AND ProductAttributeId = B
}
显然它不需要那里的实际'IF'条款,但这是我试图用亚音速做的本质。我知道我可以有两个不同的查询,具体取决于参数是否存在,但我想知道是否有更简洁的方法。
感谢。
答案 0 :(得分:0)
这就是我通常的做法 - 它不是两个查询,而是一个SqlQuery
,可选择添加约束:
SqlSquery q = DAL.DB.Delete()
.From<DAL.Product()
.Where(DAL.Product.ProductIdColumn).IsEqualTo(A);
if (B > 0)
{
q.And(DAL.Product.ProductAttributeIdColumn).IsEqualTo(B);
}
q.Execute();
可能有拼写错误,我现在无法测试。