0

使用 C# 3.5 到 VS 2008 和 subsonic 2.2。任何人都知道是否可以创建一个亚音速查询,其中间基本上有一个“IF”,这取决于传递的参数是否大于零。

例如,具有两个传递参数的删除方法 - A 和 B。

我想要类似的东西(伪代码)

DELETE from Products
Where productId = A
if(B > 0)
{
AND ProductAttributeId = B
}

显然它不需要实际的“IF”子句,但这是我试图用亚音速做的事情的本质。我知道我可以有两个不同的查询,具体取决于参数是否存在,但我想知道是否有更清洁的方法。

谢谢。

4

1 回答 1

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();

可能有错别字,我现在无法测试。

于 2011-03-31T16:14:48.303 回答