ユーザーが 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)
)