1
J'essaie de convertir une requête SQL en requête LINQ. Toute aide serait appréciée. Voici ma requête SQL:Conversion de SQL en 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
)
Cela semble très long à faire comme une requête LINQ, pourquoi ce besoin de se faire dans LINQ? –
Je suggérerais de mettre cela dans une vue mais faire WHERE filtrage (la partie qui attend des paramètres) dans une requête LINQ. –
Peut-être que c'est difficile à convertir parce que cela ne devrait pas être fait de cette façon? Spécifiquement JOIN + DISTINCT –