ここの初心者からのLinqメソッド構文のビットなので、誰でも伝えられる洞察に感謝します。必要なものは単純に思えますが、ぐるぐる回っています。2 つのテーブルと関連付けがあります (基本的に、2 つのフィールドしかないジャンクション テーブル)。私はSOに関する多くの投稿を経験しましたが、私はそれを理解していません. イライラします。わかりました。EF4 を使用して、Reports と Roles と、ReportId と RoleId フィールド、両方の整数フィールドを持つジャンクション テーブルである Roles と呼ばれるレポートのナビゲーション プロパティがあります。UserId を使用して Roles テーブルから関連するすべてのロールを取得し、それらのロールを使用してジャンクション テーブルから関連するレポートを取得し、Reports からレポートの名前を取得します。
LinqPad を試してみましたが、LinqPad に貼り付けても、ラムダ メソッド構文で生成されるものは機能しません。
SQL クエリ:
select Reports.ReportName
from Reports
inner join UserRoles on Reports.ReportId = UserRoles.ReportId
inner join Roles on Roles.RoleId = UserRoles.RoleId
where UserRoles.UserId == userId
これまでのコード:
Reports.Select(a => a.Roles.Where(t => t.UserRoles.Select(u => u.UserId == userId)));