我有一个像下面两型在配置为多对多的关系:内加入很多之间一对多的关系模型
public class Permission
{
public int PermissionId { get; set; }
public string PermissionName { get; set; }
public virtual List<Role> Roles { get; set; }
}
public class Role
{
public int RoleId { get; set; }
public string Name { get; set; }
public string ID { get; set; }
public virtual List<Permission> Permissions { get; set; }
}
我想要做的LINQ的Inner Join
。我可以在SQL中轻松地完成这项工作,因为连接表存在于那里。但是我怎么能用linq来做到这一点?下面是我能到目前为止做:
from pr in Permissions
join role in Roles on pr.Roles.Select(s => s.RoleId).FirstOrDefault() equals role.RoleId
select new { pr.PermissionName, role.RoleId }
正如你可以看到上面的FirstOrDefault
会毁了的结果,但比我不能编译查询没有错误等。
下面是我想在LINQ to编写查询:
SELECT P.PermissionName, R.RoleId
FROM Permissions AS P
INNER JOIN PermissionRoles AS PR ON P.PermissionId = PR.Permission_PermissionId
INNER JOIN Roles AS R ON PR.Role_RoleId = R.RoleId
正如你可以看到,内部连接与连接表这样的查询工作正常
任何帮助表示赞赏制成。
谢谢!你阅读任何有关Linq的精彩内容? – lbrahim
只是MSDN文档,并做了很多:) –