C# SimpleMembership的MVC4 lambda表达式
在LAMBDA表达式中,如何获取所有用户(名称和ID)及其分配的角色(名称、ID) 我很难弄清楚这个连接的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 [表(“用
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
});
还有,你试过什么?还有,你试过什么?是的,那就是我想要的——相当复杂,我会试着去理解它——但它奏效了!是的,这正是我所追求的——相当复杂,我会努力去理解它——但它是有效的!