Создать новый словарь <string, IEnumerable <SelectListItem>type с использованием IDictionary - PullRequest
1 голос
/ 02 сентября 2011

Привет, у меня есть список пользователей. Каждый пользователь принадлежит Району.

Что я хочу сделать с этим списком, так это создать из них словарь, в котором Имя области - это Ключ, а значение ключа - это список выбора пользователей в области, в котором текстовое значение имени пользователя и Значение установлено на Идентификатор пользователя.

Мне удалось добиться этого с помощью следующего кода:

    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, ...);

1 Ответ

2 голосов
/ 02 сентября 2011

Попробуйте это:

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 
                }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...