我目前正在尝试限制哪些用户可以访问哪些组,并且正在使用linq执行此操作。当我将相关组添加到视图时,我的问题出现了。
我不断得到的错误是:
LINQ to Entities无法识别方法' System.String GetUserId(System.Security.Principal.IIdentity)'方法,这个 方法无法转换为商店表达式
这是我的代码:
var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == User.Identity.GetUserId()).Select(gr => gr.GroupId);
pv.GroupList = db.Groups.Where(g => groupUser.Contains(g.Id)).ToList();
return View(pv);
答案 0 :(得分:14)
您需要在lambda表达式之外调用GetUserId()
,因为Linq to Entities无法将其转换为相应的SQL(当然,GetUserId()
没有SQL替代方法):
var userId = User.Identity.GetUserId();
var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == userId)
.Select(gr => gr.GroupId);