我想在我的控制器中生成一个强类型的角色列表,以及其他两个列表,这些列表将在我的视图中用作发送电子邮件的各种过滤器。我知道我可以使用下面的生成角色列表:什么是正确的方式来使用Linq引用您的ViewModel实例化的表作为列表来生成'SelectListItems'列表?
var viewModel = new ListViewModel
{
Roles = db.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(),
};
然而,因为我也想通过其他两个列表到我的控制,我宁愿获得的角色列表通过在书面查询下列方式:
var viewModel = db.Roles
.Select(x => new SendGroupEmailViewModel
{
Roles = x.Select(rr => new SelectListItem { Value = rr.Id.ToString(), Text = rr.Name }).ToList(),
};
这样,那么我就可以达到我的其他两个列表作为同一查询的一部分,而不是以前的方法,他们将不得不分开的有效查询到数据库。很明显,以上所述不起作用,我无法通过编写Roles = x.Select来选择角色表。
我的问题是,为什么我无法做到这一点,以类似于上面的方式编写它时,查询Roles表的正确方法是什么?
要清楚,它必须是var viewModel = db.Roles的原因是因为无论什么原因,我不能访问ID /名称角色列表,否则由于身份是如何在MVC中设置的。我知道还有其他的方式来获得这份清单,我只想知道如何以特定的方式来完成这项工作?
编辑 - 我要补充一点,在我的ViewModel角色如下:
public IEnumerable<SelectListItem> Roles { get; set; }
你需要使用(在viewbag或视图模型) SelectList sList = new SelectList(selectList,“Text”,“Value”,selected); – Emil
感谢您的回复,但我不确定这是如何回答我的问题或帮助我的,你能解释一下你的意思吗?这与我在第二个示例中编写的特定查询风格有什么关系,它如何帮助我在查询中以我需要的方式引用Roles表? – Rob