私は次のEFエンティティを持っています:
候補者
- ユーザー(ユーザー)
- CandidateId (ガイド)
- CandidateNumber (整数)
ユーザー
- ユーザー ID (ガイド)
- ユーザー名 (ガイド)
- 役割(セット)
- 候補 (セット)
役割
- RoleId (ガイド)
- 役割名 (文字列)
- ユーザー (セット)
ご覧のとおり、各候補には UserId があります。これは、特定の候補の作成者の外部キーです。私が必要とするのは、作成者と、現在のユーザーと同じ役割にある他のユーザーに関連するすべての候補者を取得することです。
たとえば、私は現在のユーザー (FOO) であり、FOO はロール MY_ROLE に属しています。また、ユーザー BOO は同じロール MY_ROLE に属しています。そのため、FOO と BOO によって作成され、現在のユーザーである FOO だけでフィルタリングされたすべての候補を取得する linq クエリ (c#) が必要です。
TSQL では、実際には非常に簡単に実行できます。しかし、LINQ では...私にとってはもっと複雑です。
ここに私のSQLがあります:
SELECT Candidates.*
FROM UsersInRoles
INNER JOIN Users ON UsersInRoles.UserId = Users.UserId
INNER JOIN Candidates ON Users.UserId = Candidates.UserId
INNER JOIN Roles ON UsersInRoles.RoleId = Roles.RoleId
WHERE ( Roles.RoleId IN
( SELECT UsersInRoles.RoleId FROM UsersInRoles
WHERE UsersInRoles.UserId = 'C6B9F0EF-7F23-4BB7-A7DB-DA614B389B13'
)
)
ありがとうございました。