您好我有一个用户列表。每个用户都属于一个区域。
我想要对此列表执行的操作是从它们创建一个字典,其中Area Name是Key,键的值是Area中用户的selectList,其Text值是Username和a值设置为用户ID。
我设法使用以下代码实现此目的:
var StaffByArea = new Dictionary<string, IEnumerable<SelectListItem>>();
foreach(var area in areas)) {
var personList = new List<SelectListItem>();
foreach (var person in staff.Where(c => c.AreaId == area.Id)) {
personList.Add(new SelectLis
tItem { Value = person.AreaId.ToString(), Text = person.Username });
}
StaffByArea.Add(area.Name, personList);
}
因此,对于每个可能的区域,我都会找到相关人员并将其添加到选择列表中。一旦我添加了该区域的所有人员,我将该选择列表添加到字典中,区域名称为关键字。
我一直在想这可能更容易用ToDictionary()
有谁知道怎么做?
我只有:
StaffByArea = Users.ToDictionary(x =&gt; x.Area.Name,...);
答案 0 :(得分:2)
试试这个:
var StaffByArea
= areas.ToDictionary(
a => a.Name,
a => staff
.Where(c => c.AreaId == area.Id)
.Select(c => new SelectListItem
{
Value = c.AreaId.ToString(),
Text = c.Username
}));