我有一个模型叫Roles
:
public string CodeRole { get; set; }
public string Organisation { get; set; }
public string LabelRole { get; set; }
CodeRole
并LabelRole
包含唯一值,但该Organisation
列包含大约 12 个类别。我想生成一个允许用户过滤的下拉列表Organisation
。
因此,我想使用实体框架构造一个查询,该查询返回某种形式的列表/数组/集合,我可以轻松地将List<SelectListItem>
两者转换为一个,text
并且value
等于不同的Organisation
值。
我假设查询看起来像这样:
_context.Roles.GroupBy(r=> r.Organisation)
这会返回一个IGrouping<string,Roles>
对象,但我不知道如何使用IGrouping
.
这将允许我将List<SelectListItem>
via a传递ViewBag
给视图中的下拉列表。
编辑:基于 Alexander Manekovskiy 响应的最终解决方案
List<Roles> orgs = (List<DimRoles>)_context.Roles.GroupBy(f => f.Organisation).Select(r => r.FirstOrDefault()).ToList();
List<SelectListItem> items = new List<SelectListItem>();
foreach (DimRoles r in orgs)
items.Add(new SelectListItem { Text = r.Organisation, Value = r.Organisation });