Sha*_*ean 30 .net c# ef-code-first entity-framework-4.1
如何通过ID获取另一个列表中的所有元素?例如; 我有List角色; 我想通过他们的Id获取此列表中数据库中的所有角色.
我正在使用代码优先.
我做了这个,它扔了一个错误:
var roles = db.Roles.Where(r => user.Roles.Any(ur => ur.RoleId == r.RoleId));
Run Code Online (Sandbox Code Playgroud)
RoleId 是int类型.
错误:
无法创建"SampleMVC.Domain.Role"类型的常量值.在此上下文中仅支持原始类型(例如Int32,String和Guid').
moi*_*eme 68
var listOfRoleId = user.Roles.Select(r => r.RoleId);
var roles = db.Roles.Where(r => listOfRoleId.Contains(r.RoleId));
Run Code Online (Sandbox Code Playgroud)
小智 11
如果user.Roles是一个int列表,这样的东西应该有效:
var roles = db.Roles.Where(r => user.Roles.Contains(r.RoleId));
Run Code Online (Sandbox Code Playgroud)
这将它变成SQL中的"SELECT WHERE IN(x,y,z ...)".