Как конвертировать C# Linq для запроса на SQL сервере? - PullRequest
0 голосов
/ 16 февраля 2020

Я младший разработчик и пытаюсь преобразовать следующее выражение linq в T- SQL:

var items = from u in DataContext.Users_SearchUsers(searchPara.UserFirstName,
                                                    searchPara.UserLastName,
                                                    searchPara.UserEmailAddress,
                                                    fetchOptions.page,
                                                    fetchOptions.rp,
                                                    fetchOptions.sortname,
                                                    fetchOptions.sortorder)
                                 .ToList()
            join a in DataContext.UserAccesses
                                 .Where(x => x.Access.AccessTypeId == 4).ToList() on u.UserID equals a.UserId into accessGroup
            select new {};

Можно ли мне помочь? into accessGroup ---> (очень важно)

Ответы [ 2 ]

0 голосов
/ 16 февраля 2020

Вы можете использовать этот код

select *(you can put your columns instead *)
from Users
join UserAccesses
on Users.userid = UserAccesses.userid
where UserAccesses.typeid = 4;
0 голосов
/ 16 февраля 2020

Прежде всего вам необходимо понять, откуда поступают ваши данные. Вы загружаете информацию из Users_SearchUsers с одной стороны и UserAccesses с другой стороны. Первый запрос выглядит как

select <somecolumns>
from users
where <somefilters>;

(вам нужно использовать ваши фактические столбцы и критерии, но Users_SearchUsers вообще не указан в вопросе). Для простоты я проигнорировал подкачку страниц

Второй запрос выглядит следующим образом:

select *
from user_accesses
where access_type_id = 4;

Давайте соединим два:

select <someoutercolumns>
from
(
select <someinnercolumns>
from users
where <somefilters>
) t1
join
(
select <someotherinnercolumns>
from user_accesses
where access_type_id = 4
) t2
on t1.user_id = t2.user_id;

Эти запросы, вероятно, не точные решения, которые вам нужны, но вы хотите, чтобы ответы улучшились, а затем улучшите свой вопрос.

Требование имеет смысл, если запрос LINQ очень медленный. В этом случае вам необходимо выполнить рефакторинг следующим образом:

select <somecolumns>
from users
join user_accesses
on users.user_id = user_accesses.user_id and user_accesses.access_type_id = 4
where <somefilters>;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...