在sortedDictionary中打印列表对象

时间:2017-01-30 10:49:47

标签: c# unit-testing dictionary

所以我试图打印出我列表中的成员。我使用以下字典结构:SortedDictionary<string,List<int>>其中我使用字符串作为键。

在我的函数ShowContents中,我试图打印出我正在查看的条目,元素的数量以及元素的含义。这就是我挣扎的地方。我只是获得System.Collections.Generic.List1[System.Int32]而不是对象。

这是我目前的代码:

SortedDictionary<string,List<int>> jumpStats = new SortedDictionary<string,List<int>>(); // jumpstats[0] == (volt, 10m)
public string ShowContents()
        {
            var sb = new StringBuilder();
            foreach (KeyValuePair<string, List<int>> item in jumpStats)
            {
                sb.Append(string.Format("{0}: has {1} entries with values {2}", item.Key, item.Value.Count(), item.Value));
            }
            return sb.ToString();
        }
        public SortedDictionary<string,List<int>> addjumpStats() //Adding information about the jump to the dictionary
        {
            try
            {
                jumpStats.Add("Volt", new List<int>());
                jumpStats["Volt"].Add(12);
                jumpStats["Volt"].Add(13);
                jumpStats["Volt"].Add(15);
            }
            catch (ArgumentException)
            {
                Console.WriteLine("An Element already exists with the same key");
            }
            return jumpStats;
        }

现在输出示例:Volt: 3 System.Collections.Generic.List1[System.Int32]

1 个答案:

答案 0 :(得分:1)

在你的追加函数中你输出item.Value是List<int>因此你看到类名的原因 - List的ToString函数不知道连接列表中的所有值在一起 - 它只返回类名。你需要告诉它该怎么做。一个简单的方法是使用string.join:

string.Join(",", item.Value)

在上下文中:

var sb = new StringBuilder();
foreach (KeyValuePair<string, List<int>> item in jumpStats)
{
    sb.Append(string.Format("{0}: has {1} entries with values {2}", item.Key, item.Value.Count(),  string.Join(",", item.Value));
}
return sb.ToString();