C# SimpleMembership的MVC4 lambda表达式

C# SimpleMembership的MVC4 lambda表达式,c#,asp.net-mvc,linq,entity-framework,lambda,C#,Asp.net Mvc,Linq,Entity Framework,Lambda,在LAMBDA表达式中,如何获取所有用户(名称和ID)及其分配的角色(名称、ID) 我很难弄清楚这个连接的Lambda语法 例如: UserProfile: 用户名 肯,1岁 芭比,2 爱丽丝,3岁 网页和角色: RoleName,RoleId 行政,1 编辑,2 客人,3 网页\用户角色 用户ID,RoleId 1, 1 1, 2 2, 1 结果应该是: 用户名,角色名,用户ID,角色ID 肯,管理员,1,1 肯,编辑,1,2 芭比娃娃,管理员,2,1 [表(“用

在LAMBDA表达式中,如何获取所有用户(名称和ID)及其分配的角色(名称、ID)

我很难弄清楚这个连接的Lambda语法

例如:

UserProfile:
用户名
肯,1岁
芭比,2
爱丽丝,3岁
网页和角色:
RoleName,RoleId
行政,1
编辑,2
客人,3
网页\用户角色
用户ID,RoleId
1,      1
1,      2
2,      1
结果应该是:
用户名,角色名,用户ID,角色ID
肯,管理员,1,1
肯,编辑,1,2
芭比娃娃,管理员,2,1
[表(“用户档案”)]
公共类用户配置文件
{
[关键]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId{get;set;}
公共字符串用户名{get;set;}
公共虚拟ICollection用户角色{get;set;}
}
[表格(“网页和角色”)]
公共阶级角色
{
公共角色()
{
成员=新列表();
}
[关键]
public int RoleId{get;set;}
[StringLength(256)]
公共字符串RoleName{get;set;}
公共ICollection成员{get;set;}
公共虚拟ICollection用户角色{get;set;}
}
[表格(“网页\用户角色”)]
公共类用户角色
{
[键,列(顺序=0)]
public int UserId{get;set;}
公共虚拟用户配置文件用户{get;set;}
[键,列(顺序=1)]
public int RoleId{get;set;}
公共虚拟角色{get;set;}
}

您可以使用
LINQ

var users = (from users in UserProfile
             from userRoles in users.UsersInRole
             from roles in userRoles.Role
             select new 
             {
               UserName = users.UserName
               , UserId = users.UserId
               , RoleName = roles.RoleName
               , RoleId = roles.RoleId
             }).ToList();

您可以使用
LINQ

var users = (from users in UserProfile
             from userRoles in users.UsersInRole
             from roles in userRoles.Role
             select new 
             {
               UserName = users.UserName
               , UserId = users.UserId
               , RoleName = roles.RoleName
               , RoleId = roles.RoleId
             }).ToList();

如果您使用的是实体框架,下面的代码将返回您想要的内容

using(var context = new DBContext()){ 
        return context.UserProfiles;
}

如果您使用的是实体框架,下面的代码将返回您想要的内容

using(var context = new DBContext()){ 
        return context.UserProfiles;
}

如果lambda语法指的是方法链语法,则如下所示:

var result = db.UserProfiles.Join(db.webpages_UsersInRoles, u => u.UserId, ur => ur.UserId, (u, ur) => new {u, ur})
            .Join(db.webpages_Roles, t => t.ur.RoleId, r => r.RoleId, (t, r) => new
                {
                    t.u.UserName,
                    r.RoleName,
                    t.u.UserId,
                    r.RoleId
                });

如果lambda语法指的是方法链语法,则如下所示:

var result = db.UserProfiles.Join(db.webpages_UsersInRoles, u => u.UserId, ur => ur.UserId, (u, ur) => new {u, ur})
            .Join(db.webpages_Roles, t => t.ur.RoleId, r => r.RoleId, (t, r) => new
                {
                    t.u.UserName,
                    r.RoleName,
                    t.u.UserId,
                    r.RoleId
                });

还有,你试过什么?还有,你试过什么?是的,那就是我想要的——相当复杂,我会试着去理解它——但它奏效了!是的,这正是我所追求的——相当复杂,我会努力去理解它——但它是有效的!