2011-03-31 52 views
0

使用C#3.5到VS 2008和亞音速2.2。 任何人都知道是否可以創建基本上在其中間有「IF」的亞音速查詢,具體取決於傳遞的參數是否大於零。亞音速 - 帶可選參數的查詢

例如,有兩個傳遞的參數的刪除方法 - A和B.

我想是這樣(僞代碼)

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

顯然它不會需要實際的「IF」在那裏,但這是我試圖用亞音速做的本質。我知道根據參數是否存在,我可以只有兩個不同的查詢,但我想知道是否有更乾淨的方法。

謝謝。

回答

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

可能有一個錯字,我現在不能測試此權利。

+0

非常好,謝謝 - 我會試試看。 – scaryjones 2011-03-31 17:43:06