繁体   English   中英

如何将 C# Linq 转换为 SQL Server 中的查询?

[英]How to convert C# Linq to query in SQL Server?

我是一名初级开发人员,正在尝试将以下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没有在问题中指定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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM