0

ユーザーが LINQ で 1 つ以上の方法で建物に関連しているかどうかに基づいてレコード セットを返そうとしていますが、これには多くの問題があります。

基本的に、同じ建物内に存在するすべてのユーザー、または建物のテナントであるすべてのユーザーを表示する必要があります。

これは、建物 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)
    )
4

1 に答える 1