我不赞成将项目从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'语句中,如果值不为null,则'where'子句仅在if语句中进行转换。

最佳答案

要将其转换为SP,您需要使Variable1为参数。可以在IIf子句中解决WHERE部分,如下所示:

CREATE PROCEDURE [procedure_name] @variable1 varchar(50)
AS
BEGIN
    SELECT *
    FROM ID9Codes
    WHERE LEN(LTRIM(RTRIM(ISNULL(@variable1, '')))) = 0
        OR Code lIKE @Variable1 + '%'
END

10-01 19:35