将linq语句转换为SQL

3

我正在将使用linq编写的项目转换回sql存储过程。由于我的公司拒绝升级我们的SQL 2000数据库,所以我被困在这个当前代码上,试图将其转换为sql。有人能帮忙吗?

Dim ICD9Codes = (
From a In Linq2Db.ICD9Codes
Where IIf(String.IsNullOrEmpty(Variable1), 1 = 1, a.Code.StartsWith(Variable1))
Select a).ToList

我卡在了“IIF”语句的转换上,其中“where”子句仅在值不为空时使用if语句。

1
如果您使用LinqPad在数据库中运行该查询,您可以切换到SQL选项卡,查看实际生成的语句,然后您可以对其进行修改以适应需要。 - Squid
1个回答

3
要将其转换为存储过程,您需要将Variable1变量设为参数。可以在WHERE子句中解决IIf部分,例如:
CREATE PROCEDURE [procedure_name] @variable1 varchar(50)
AS
BEGIN
    SELECT *
    FROM ID9Codes
    WHERE LEN(LTRIM(RTRIM(ISNULL(@variable1, '')))) = 0
        OR Code lIKE @Variable1 + '%'
END

完美运行...非常感谢!!!我的原始代码实际上比我提供的这个片段要复杂得多,但是这个最终的部分帮助我解决了整个Linq查询。再次感谢您! - Amy Fifth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接