来自新手的一点 Linq 方法语法,所以我很感激任何人都可以传递的任何见解。我需要的东西看起来很简单,但它让我绕圈子。我有 2 个表和一个关联(基本上是一个只有 2 个字段的联结表)。我已经浏览了很多关于 SO 的帖子,但我就是不明白。令人沮丧。好的,使用 EF4,我在 Reports 上有一个名为 Roles 的导航属性,它是联结表(具有 ReportId 和 RoleId 字段,均为整数字段)。我使用 UserId 从 Roles 表中获取所有关联的角色,使用这些角色从联结表中获取关联的报告,然后从 Reports 中获取报告的名称。
我已经尝试过 LinqPad,但是当我将它粘贴回 LinqPad 时,它在 lambda 方法语法中产生的内容甚至都不起作用。
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)));