使用IDictionary </string,>创建新的Dictionary <string,ienumerable <selectlistitem =“”>类型

时间:2011-09-02 00:21:11

标签: c# asp.net dictionary

您好我有一个用户列表。每个用户都属于一个区域。

我想要对此列表执行的操作是从它们创建一个字典,其中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,...);

1 个答案:

答案 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 
                }));