1
我试图将SQL查询转换为LINQ查询。任何帮助,将不胜感激。 这里是我的SQL查询:将SQL转换为LINQ
SELECT DISTINCT
U.UserID,
U.LoginID,
U.FirstName,
U.LastName,
U.IsActive,
U.IsApproved,
U.Email,
U.DateLastLogin,
CONVERT(VARCHAR, U.DateLastLogin, 101) AS LastLogin,
U.JobTitle,
U.AgencyName,
U.WorkPhone,
U.Fax,
U.MobilePhone,
U.Satellite,
U.Blackberry,
U.Pager,
U.Address1,
U.Address2,
U.City,
U.StateAbbr,
U.ZipCode,
G.[Name] AS GroupName,
COALESCE(B.UserID, 0) AS BTC
FROM dbo.Users U
INNER JOIN dbo.Users_Grantee UG ON U.UserID = UG.UserID
INNER JOIN dbo.Users_Groups UGRP ON UG.UserID = UGRP.UserID
INNER JOIN dbo.Groups G ON UGRP.GroupID = G.GroupID
--Flag for BTC Users
LEFT OUTER JOIN (
SELECT UG2.UserID
FROM dbo.Users_Groups UG2
INNER JOIN dbo.Groups G2 ON UG2.GroupID = G2.GroupID
WHERE G2.GroupClass_ID = 44
) B ON U.UserID = B.UserID
WHERE U.IsAdminUser = 0
AND U.IsActive = @IsActive
AND UG.GranteeID = @GranteeID
AND G.GroupClass_ID = 1 --Grantee GroupClass
AND (U.LastName LIKE @LastName
OR U.FirstName LIKE @FirstName
OR U.Email LIKE @Email
OR U.LoginID = @LoginID)
--Exclude PO users who have grantee access.
AND NOT EXISTS(
SELECT 1
FROM dbo.Users_Groups UG1
INNER JOIN dbo.Groups G1 ON UG1.GroupID = G1.GroupID
WHERE UG1.UserID = UG.UserID
AND G1.GroupClass_ID <> 1
AND G1.GroupClass_ID <> 44
)
这似乎非常长的时间做一个LINQ查询,为什么这需要在LINQ做了什么? – 2010-12-13 20:47:52
我建议把它放在视图中,但是在LINQ查询中做WHERE过滤(需要参数的部分)。 – 2010-12-13 20:55:52
也许它很难转换,因为它不应该这样做?尤其是JOIN + DISTINCT – 2010-12-13 22:06:30