从另一个列表中的列表创建选择列表

时间:2015-12-03 21:23:29

标签: c# asp.net-mvc linq selectlist

我有两种不同的型号。 UsersInRoles模型和Users模型。用户可以处于多个角色,因此在UsersInRoles模型中,它将userId与RoleId匹配。我需要做的是为特定角色的所有用户获取一个selectList。我尝试了两种不同的方法,但两种方法都不起作用。

这是我尝试的第一种方法:

var techs = new HashSet<Guid>(db.usersInRoles.Where(u => u.RoleId == new Guid(Properties.Settings.Default.TechID)).Select(u => u.UserId));
ViewBag.SearchTechnician = new SelectList(db.Users.Where(u => u.UserId == techs.Contains<userId>).OrderBy(u => u.FirstName).ThenBy(u => u.LastName), "FullName", "FullName");

我在.Contains上收到的错误是:

  

找不到类型或命名空间名称(您是否缺少using指令或程序集引用)?

我尝试的第二种方法是:

ViewBag.SearchTechnician = new SelectList(from u in db.Users
                                          where u.UserId = (
                                          from ur in db.usersInRoles
                                          where ur.RoleId = new Guid(Properties.Settings.Default.TechID)
                                          select ur.UserId
                                          );

我在第二个where子句中收到错误,说明如下:

无法将System.Guid类型隐式转换为bool

我是在正确的轨道上还是完全走错了路?

1 个答案:

答案 0 :(得分:0)

使用==而不是=在您使用的第二种方法中进行比较。

where ur.RoleId == new Guid(Properties.Settings.Default.TechID)