我在将SQL Server存储过程转换为Linq查询时遇到了一些麻烦。我已经阅读了几个让它看起来很简单的教程。但部分存储过程涉及运行一个函数来填充过程中声明的表,如下所示:
DECLARE @userOrgs TABLE(OrgId INT, OrgActiveFlag BIT)
INSERT INTO @userOrgs(.......)
SELECT OrgId, OrgActiveFlag
FROM someFunction
填充表的函数已经转换为C#,所以我可以在我的类中调用它,我正在实现其余的过程。当我到达查询时,有一堆内部联接要做,并且因为这个临时表被定义为var,所以我无法访问OrgId来执行最后一次连接。这是要转换的FROM块:
FROM USER_ActiveUsers AU
INNER JOIN USER_Users U ON U.Id = AU.UserId
INNER JOIN AUTH_UserIdentities UI ON UI.Id = U.Id
INNER JOIN CVRS_ClientVars CV ON CV.UserId = U.Id
INNER JOIN ORGN_Orgs O ON O.Id = CV.Value
INNER JOIN @userOrgs UO ON UO.OrgId = O.Id
这是我到目前为止所拥有的。最后一个连接是说'object'不包含“OrgId”的定义:
var records = from au in activeUsers
join u in users on au.UserId equals u.Id
join ui in userIdents on u.Id equals ui.Id
join cv in clientVars on u.Id equals cv.Id
join o in organizations on cv.Value equals o.Id.ToString()
join ao in accessibleOrganizations on o.Id equals ao.OrgId
如何使OrgId可访问以便我可以进行最后一次加入?