【问题标题】:Create new Dictionary<string, IEnumerable<SelectListItem> type using IDictionary使用 IDictionary 创建新的 Dictionary<string, IEnumerable<SelectListItem> 类型
【发布时间】:2011-09-02 00:21:11
【问题描述】:

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

我想要对这个列表做的是从中创建一个字典,其中区域名称是键,键的值是区域中用户的选择列表,其中包含用户名的文本值和设置为用户 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 => x.Area.Name, ...);

【问题讨论】:

    标签: c# asp.net dictionary


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • 太棒了,谢谢。显然我需要更好地学习我的 Linq。
    猜你喜欢
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多