使用foreach枚举内部字典

时间:2009-10-29 13:14:47

标签: c# dictionary

我有一本字典词典,我似乎无法弄清楚如何在内部字典中进行foreach循环。

我的收藏:

Dictionary<int, Dictionary<int, User>>

到目前为止,我有:

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

6 个答案:

答案 0 :(得分:6)

嵌套的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))
        {

        }  

答案 1 :(得分:4)

foreach (KeyValuePair<int, Dictionary<int, User>> users in myDic) {
    foreach (KeyValuePair<int, User> user in users.Value) {
        ...
    }
}

答案 2 :(得分:2)

foreach(User user in myDic[someKey].Values)

是你问题的字面答案;虽然我通常建议使用TryGet方法,除非你某些 someKey在你的词典的Keys集合中。

答案 3 :(得分:1)

你在找这个吗?

    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
        }

答案 4 :(得分:0)

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

答案 5 :(得分:0)

var users = myDic.Select(kvp => kvp.Value).SelectMany(dic => dic.Values);
foreach(User user in users)
{
   ...
}
相关问题