1
したがって、Entity Frameworkを使用してSQL Serverストアドプロシージャを変換する作業を進めています。私がやらなければならないクエリーの1つは、where節で使用されるようになるテーブルとの左結合です。Linq null参照の可能性がある条件
var union3 = (from o in orgs
from uos in accessOrgIds.Where(x => o.Id == x)
from sr in secRoles.Where(x => x.Id == secRoleId).DefaultIfEmpty()
where (o.StatusId == 1)
&& (secRoleId == 0 || sr == null ? false : sr.Id == secRoleId)
select o);
union3
(現在の選択をPS-無視し、私は、デバッグ目的の周りにそれを変更)sr
は、where句から削除されるたびにo
の結果セットを有しています。次のSQLと同じ効果を持つクエリにテーブルを含めるにはどうすればよいですか?
SELECT
ISNULL(SR.Id, @securityRoleId),
O.Id,
O.Name AS OrganizationName,
SR.Name AS SecurityRoleName,
-1 AS IsSelected,
SR.[Description],
SR.IsSystem,
SR.IsOATI,
ISNULL(SR.StatusId, 1) AS StatusId,
SR.IsAdmin
FROM
Organizations O WITH (NOLOCK)
INNER JOIN @userOrganizations UOS ON UOS.OrganizationId = O.Id
LEFT JOIN SecurityRoles SR WITH (NOLOCK) ON SR.Id = @securityRoleId
WHERE O.StatusId = 1
AND (@securityRoleId = 0 OR SR.Id = @securityRoleId)
PS - @userOrganizations
表は、以下のようにあなたが試すことができ、正しく
これはあなたのため、または何のために働いていますか? – Sampath