在与linq的连接中使用case语句

时间:2016-12-15 11:27:56

标签: sql-server entity-framework linq sql-to-linq-conversion

我正在尝试将此SQL查询转换为linq查询,但没有太多运气。

SELECT DISTINCT     gen.ID
                ,   gen.Name
                ,   Ssec.System 
FROM                dbo.Generic Gen
JOIN                dbo.SystemsSelected SSel
ON                  Gen.RecordID = SSel.RecordID
JOIN                dbo.Security SSec
ON (
            SSel.SystemA = CASE WHEN Ssec.System = '1stSystem' THEN 1 ELSE NULL END
        OR  SSel.SystemB = CASE WHEN Ssec.System = '2ndSystem' THEN 1 ELSE NULL END
    )
and SSec.Username = 'myUserName'

我查看了以下帖子,但无法将示例应用于我的代码:

Link join with case condition

Linq query with table joins

任何帮助将不胜感激!

由于

1 个答案:

答案 0 :(得分:0)

我不能直接回答我自己的问题,但我找到了解决方法。

我使用linq代替调用存储过程并且工作正常。

要做到这一点:

1)将代码保存为存储过程,该过程接受名为UserName的参数 2)将SP添加到实体框架模型中 3)使用以下方法调用SP:

public JsonResult GetNewTeams(string userUserName)
    {
        using (YourDBNameEntities db = new YourDBNameEntities ())
        {

            var ret = db.SP_YourStoredProcedureName(userUserName).ToList();

            return Json(ret, JsonRequestBehavior.AllowGet);

        }
    }

多数民众赞成,完成了,没有更可怕的linq !! :)

酱:Using stored procedures in LINQ