Перечисление внутреннего словаря с использованием foreach - PullRequest
2 голосов
/ 29 октября 2009

У меня есть словарь словарей, и я не могу понять, как выполнить цикл foreach во внутреннем словаре.

Моя коллекция:

Dictionary<int, Dictionary<int, User>>

Пока у меня есть:

foreach(User user in myDic[someKey]??)

Ответы [ 6 ]

6 голосов
/ 29 октября 2009

вложенный foreach

foreach (var keyValue in myDic){
   foreach (var user in keyValue.Value){
     ....
   }
}

или немного linq

        foreach (User User in myDic.SelectMany(i => i.Value).Select(kv=>kv.Value))
        {

        }  

заказано UserName

        foreach (User User in myDic.SelectMany(i => i.Value)
                                   .Select(kv=>kv.Value)
                                   .OrderBy(u=>u.UserName))
        {

        }  
4 голосов
/ 29 октября 2009
foreach (KeyValuePair<int, Dictionary<int, User>> users in myDic) {
    foreach (KeyValuePair<int, User> user in users.Value) {
        ...
    }
}
2 голосов
/ 29 октября 2009
foreach(User user in myDic[someKey].Values)

Является ли буквальный ответ на ваш вопрос; хотя я обычно рекомендую использовать метод TryGet, если вы не уверены , что someKey находится в коллекции ключей вашего словаря.

1 голос
/ 29 октября 2009

Вы ищете это?

    var myDic = new Dictionary<int, Dictionary<int, string>>();
    foreach(var item in myDic)
        foreach (var subItem in item.Value)
        {
            Display(
                subItem.Key,    // int
                subItem.Value); // User
        }
0 голосов
/ 29 октября 2009
var users = myDic.Select(kvp => kvp.Value).SelectMany(dic => dic.Values);
foreach(User user in users)
{
   ...
}
0 голосов
/ 29 октября 2009
//given: Dictionary<int, Dictionary<int, User>> myDic

foreach(KeyValuePair<int, Dictionary<int, User>> kvp in myDic) {
   foreach(KeyValuePair<int, User> kvpUser in kvp.Value) {
      User u = kvpUser.Value;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...