C# 在sqlite中替换以下查询

C# 在sqlite中替换以下查询,c#,sql-server,if-statement,sqlite,C#,Sql Server,If Statement,Sqlite,在存储过程中,我有一个sql server查询,参数为@firstId和@secondId,如下所示 IF @firstId = '' begin SELECT DISTINCT x, y = FROM t1 LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId ORDER BY t1.somecolumn END ELSE BEGIN SELECT DISTINCT x, y = FROM t1 LEFT OUTER JOIN

在存储过程中,我有一个sql server查询,参数为@firstId和@secondId,如下所示

IF @firstId = ''
begin

SELECT DISTINCT x, y =
FROM t1
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId
ORDER BY t1.somecolumn

END
ELSE
BEGIN

SELECT DISTINCT x, y =
FROM t1
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId
AND t1.id = @firstId
ORDER BY t1.somecolumn
END
我对sqlite非常陌生,试图用sqlite文档中建议的case语句在sqlite中编写上述查询,但迄今为止还无法实现同样的效果。我想实现下面这样的功能或更好的查询

CASE WHEN @firstId = '' THEN (CHOOSE FIRST SELECT STATEMENT) ELSE (CHOOSE SECOND SELECT STATEMENT) END
我考虑将原始sql查询拆分为sqlite中的两个select语句,并根据c#代码基文件中处理的条件调用相应的查询,如下所示,但不确定这是否是一种好的做法

if(firstId == string.empty)
{
//call the first select statement
}
else
{
//call the second select statement
}

我不想将存储过程拆分为两个单独的查询。感谢您的帮助

你可以一次完成。上述两种说法相当于:

SELECT DISTINCT x, y
FROM t1
LEFT OUTER JOIN t2 ON t1.id = t2.id AND t2.id = @secondId
                      AND (t1.id = @firstId OR  @firstId = '')
ORDER BY t1.somecolumn
显而易见的答案是“将存储过程拆分为两个单独的查询”。你为什么不想这样做?