我正在尝试根据用户是否以 LINQ 中的一种或多种方式与建筑物相关来返回记录集,并且在这方面遇到了很多麻烦。
基本上,我需要显示存在于同一建筑团体内的所有用户,或者他们是建筑物中的租户。
这也将由一组建筑物 ID 过滤。在我的示例中,我对构建数组 (2, 4, 6) 进行了硬编码,但这需要是某种形式的 .Contains()
我已经用标准 SQL 编写了我需要的查询,并且运行良好。我在将其转换为 LINQ 时遇到了很多麻烦。
有人可以解释一下在 linq 中执行此类操作的最佳方法是,还是建议一种我能够将标准 SQL 转换为实体的方法?
SELECT
*
FROM
UserProfile UP
WHERE
EXISTS(
SELECT
BodyCorporateMemberID
FROM
BodyCorporateMembers BCM
WHERE
UP.UserId = BCM.UserId AND BCM.BuildingId IN (2, 4, 6)
)
OR
EXISTS(
SELECT
UR.UserRoomId
FROM
UserRoom UR
INNER JOIN Rooms R ON UR.RoomId = R.RoomId
INNER JOIN Floors F ON R.FloorId = F.FloorId
WHERE
UR.UserId = UP.UserId AND F.BuildingId IN (2, 4, 6)
)