Пусть в linq к sql серверу - PullRequest
0 голосов
/ 17 июня 2019

У меня есть следующий код в linq:

(from emp in db.EMPLOYEES
 from tab in db.CATEGORY.Where(o => o.Id == 19).DefaultIfEmpty()
 on emp.Id = tab.EMP_ID
let url = (!tab.PAGE.StartsWith("/") && !tab.PAGE.StartsWith("#"))
                                            ? tab.PAGE + "(" + emp.EMP_VALUE + ")"
                                            : tab.PAGE.Contains("?")
                                            ? tab.PAGE + "&Id=" + emp.EMP_VALUE + "&fromSSR=" + BooleanStr.True
                                             : tab.PAGE + "?Id=" + emp.EMP_VALUE + "&fromSSR=" + BooleanStr.True
                        select new EmployyeModel
                         {
                             Id = emp.Id,
                             RedirectURL = tab.NOT_CH_APPROVAL == BooleanStr.True ? url + "&userCanApprove=1" : url,
                         }

Мне нужно написать вышеуказанный запрос на сервере sql и мне нужна помощь по части "let url". Как мне перевести let в sql server и использовать его в select?

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 17 июня 2019

Создать пользовательскую функцию:

CREATE FUNCTION fnBuildUrl (
    @page       varchar(100),
    @emp_value  varchar(100)
)
RETURNS VARCHAR(1000)
AS  
BEGIN 
   DECLARE @url varchar(1000)

    SELECT @url = CASE WHEN LEFT(@page, 1) = '/' THEN 
        @page + '(' + @emp_value  + ')'
    ELSE
        CASE WHEN CHARINDEX('?', @page) > 0 THEN
            @page + '&Id=' + @emp_value  + '&fromSSR=T'
        ELSE @page + '?Id=' + @emp_value + '&fromSSR=T' END
    END

    RETURN @url
END
GO

Тогда позвони в свой SELECT:

SELECT emp.Id,
    CASE WHEN tab.NOT_CH_APPROVAL = 'T' THEN dbo.fnBuildUrl(tab.PAGE, emp.EMP_VALUE) + '&userCanApprove=1'
    ELSE dbo.fnBuildUrl(tab.PAGE, emp.EMP_VALUE) END AS RedirectURL 

FROM EMPLOYEES emp
LEFT OUTER JOIN CATEGORY tab
ON tab.EMP_ID = emp.Id
AND tab.Id = 19
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...