我是一名初级开发人员,正在尝试将以下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
--->(非常重要(
首先,您需要了解数据的来源。您一方面从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>;
您可以使用此代码
select *(you can put your columns instead *)
from Users
join UserAccesses
on Users.userid = UserAccesses.userid
where UserAccesses.typeid = 4;