Pergunta

Usando C# 3.5 até VS 2008 e subsônico 2.2.Alguém sabe se é possível criar uma consulta subsônica que tenha essencialmente um 'IF' no meio, dependendo se um parâmetro passado foi, por exemplo, maior que zero.

Por exemplo, um método delete que possui dois parâmetros passados ​​- A e B.

Eu quero algo como (pseudocódigo)

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

Obviamente, não seria necessária a cláusula 'IF', mas essa é a essência do que estou tentando fazer com o subsônico.Eu sei que posso ter apenas duas consultas diferentes, dependendo se o parâmetro está lá ou não, mas queria saber se existe uma maneira mais limpa de fazer isso.

Obrigado.

Foi útil?

Solução

É assim que costumo fazer - não são duas consultas, mas uma SqlQuery com restrições opcionalmente adicionadas:

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

Pode haver um erro de digitação, não posso testar isso agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top