C#中如何将Dictionary的值添加到List或Array?问题求助
问题解决建议
问题1:Append()无法向List添加元素
List<T>.Append()是LINQ扩展方法,它不会修改原List实例,而是返回一个包含新增元素的全新IEnumerable<T>序列。你当前代码只是调用了Append但没接收返回值,导致原selected List始终是空的。
正确做法是用List<T>.Add()方法,它会直接修改原List,把元素添加到集合里:
foreach (var result in data) { selected.Add(result.Value); // 替换Append为Add // ... }
问题2:直接输出List对象只会显示类型名
执行Console.WriteLine(selected)时,默认调用List的ToString()方法,该方法只会返回集合的类型全称(也就是你看到的System.Collections.Generic.List1[System.String]`)。要输出List里的元素,需要手动处理:
方式1:遍历输出每个元素
foreach (var item in selected) { Console.WriteLine(item); }
方式2:用string.Join拼接成字符串输出
Console.WriteLine(string.Join(", ", selected)); // 用逗号分隔元素,可自定义分隔符
完整修改后的代码
public static void Main () { List<string> selected = new List<string>(); var data = new Dictionary<string, string>() { {"A", "a"}, {"B", "b"}, {"C", "c"}, }; foreach (var result in data) { selected.Add(result.Value); // 输出当前List的所有元素 Console.WriteLine(string.Join(", ", selected)); } }
更简洁的写法(可选)
如果不需要逐个添加的过程,可以直接通过LINQ一次性把Dictionary的值转成List或数组:
// 直接转List List<string> selected = data.Values.ToList(); // 直接转数组 string[] selectedArray = data.Values.ToArray(); // 输出结果 Console.WriteLine(string.Join(", ", selected));
内容的提问来源于stack exchange,提问作者sara
相关产品推荐
相关产品推荐

