2011-09-02 63 views
1

嗨我有一个用户列表。每个用户都属于一个区域。使用IDictionary创建新的字典<字符串,IEnumerable <SelectListItem>类型

我想要对这个列表做什么是从他们创建一个字典,其中区域名称是密钥,而密钥的值是用户在该区域中的选择列表,其中用户名的文本值为设置为用户标识的值。

我设法做到这一点使用下面的代码:

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 => x.Area.Name,...);

回答

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 
       })); 
+0

辉煌,谢谢大家。显然我需要更好地学习我的Linq。 – AnonyMouse

相关问题