我正在尝试根据用户是否以 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)
    )