StackOverflowExeption将Dictionary <t,v =“”>转换为List <keyvaluepair <t,v =“”>&gt; </keyvaluepair <t,> </t,>

时间:2014-05-05 12:37:39

标签: c# stack-overflow

我不是最好的C#,我在这段代码中得到了一个堆栈溢出代码:

private Dictionary<T, V> collection;
internal List<KeyValuePair<T, V>> ToList()
{
    return collection.ToList(); //the VS debugger breaked here
}

以下是完整的课程:http://pastebin.com/ji0Vrm0X
希望有人能找到堆栈溢出功能。

继承了更多信息:$

  internal QueuedDictionary<int, RoomUser> UserList
        {
            get
            {
                return userlist;
            }
        }

    internal List<RoomUser> GetRoomUsers()
    {
        List<KeyValuePair<int, RoomUser>> users = UserList.ToAList();

        List<RoomUser> returnList = new List<RoomUser>();
        foreach (KeyValuePair<int, RoomUser> pair in users)
        {
            if (!pair.Value.IsBot)
                returnList.Add(pair.Value);
        }

        return returnList;
    }

1 个答案:

答案 0 :(得分:2)

从字典中明确创建新的KeyValuePair<T,V>元素,然后列出它:

internal List<KeyValuePair<T, V>> ToList()
{
    return collection.Select(kvp => new KeyValuePair<T,V>(kvp.Key, kvp.Value).ToList(); 
}

应该执行您想要的操作。

修改我希望您的代码能够正常运行。可能是Dictionary的.ToList()方法与.Select(x => x.Value)类似,而不是返回List<KeyValuePair<X,Y>>。 但那只是我的猜测。