C# 对应SQL查询的LINQ查询

C# 对应SQL查询的LINQ查询,c#,linq,entity-framework,entity-framework-4,linq-to-entities,C#,Linq,Entity Framework,Entity Framework 4,Linq To Entities,Basicall I有三个表Users Roles和USerRoles,它们具有多对多关系,还有Department表。因此,当我在.edmx上导入这些时,我只得到两个实体。所以我在两个实体中都有导航属性。我有三个用户和两个角色(管理员和只读)。下面是我的Sql查询 select U.UserName,r.RoleName,dp.DepName from Users U inner join UserRoles UR on U.UseID = UR.UserId inner join Roles

Basicall I有三个表Users Roles和USerRoles,它们具有多对多关系,还有Department表。因此,当我在.edmx上导入这些时,我只得到两个实体。所以我在两个实体中都有导航属性。我有三个用户和两个角色(管理员和只读)。下面是我的Sql查询

select U.UserName,r.RoleName,dp.DepName
from Users U
inner join UserRoles UR on U.UseID = UR.UserId
inner join Roles r on UR.RoleId = r.RoleID
inner join dbo.Department Dp on dp.DepId = U.DepId
group by r.RoleName,U.UserName,Dp.DepName 
这是我尝试的Linq查询,我可以为特定用户获取depName,但不能获取RoleName。 实际上,用户角色和用户角色之间存在多对多关系。在我的上下文中,我没有UserRoles实体。请在这方面帮助我

List<User> user = db.Users.Include("Department,Roles").ToList(); 
foreach (var U in user)
{ 
    Console.WriteLine(U.UseID + " " + U.UserName +" "+ U.Department.DepName+ " "+ U.Roles.);            
}
List user=db.Users.Include(“部门、角色”).ToList();
foreach(用户中的变量U)
{ 
Console.WriteLine(U.UseID+“”+U.UserName+“”+U.Department.DepName+“”+U.Roles);
}

每个表必须包含一个。您的查询应该如下所示

List<User> users = db.Users.Include("Department").Include("Roles").ToList();
List users=db.users.Include(“部门”).Include(“角色”).ToList();

每个表必须包含一个。您的查询应该如下所示

List<User> users = db.Users.Include("Department").Include("Roles").ToList();
List users=db.users.Include(“部门”).Include(“角色”).ToList();

只要您有多对多关系,就需要迭代每个用户的每个角色:

foreach (var u in users)
{
    foreach (var r on u.Roles)
    {
        Comsole.WriteLine("User {0} has role {1}, u.UserName, r.RoleName);
    }
}

只要您有多对多关系,您就需要迭代每个用户的每个角色:

foreach (var u in users)
{
    foreach (var r on u.Roles)
    {
        Comsole.WriteLine("User {0} has role {1}, u.UserName, r.RoleName);
    }
}

您好,谢谢,但我仍然无法从角色集合中获取角色名。没有错误,但我无法访问角色名。当我为每个用户打印DepName时…自动生成的用户实体,具有角色角色属性public TrackableCollection角色我需要将属性设置为虚拟吗感谢它的工作…顺便说一句,我对实体框架linq查询不熟悉,所以我在做一些研发…在这种情况下,保留多个属性是否更好许多关系..或者我们可以在用户表中存储角色id。哪一个更好。@MutturajBali:您有计划将用户添加到多个角色吗?如果设计禁止这样做,您可能希望切换到一对一关系,这样您就只有
user.Role.RoleName
。您好,谢谢,但我仍然无法从角色集合中获取RoleName。没有错误,但我无法访问RoleName。当我为每个用户打印DepName时…自动生成的用户实体,具有角色角色属性public TrackableCollection角色我需要将属性设置为虚拟吗感谢它的工作…顺便说一句,我对实体框架linq查询不熟悉,所以我在做一些研发…在这种情况下,保留多个属性是否更好许多关系..或者我们可以在用户表中存储角色id。哪一个更好。@MutturajBali:您有计划将用户添加到多个角色吗?如果设计禁止这样做,您可能希望切换到一对一关系,这样您就只有
user.Role.RoleName