展平字符串字典

时间:2014-07-30 18:35:28

标签: c# linq

我有这行代码:

Dictionary<string,string> alreadyThere = GetItFromFooMethod();
List<string> flatList = alreadyThere.Values.SelectMany(a => a).ToList();

但是我得到了这个编译错误:

Cannot implicitly convert type 'System.Collections.Generic.List<char>' to 'System.Collections.Generic.List<string>'

为什么我认为我需要char?我该如何解决?

1 个答案:

答案 0 :(得分:7)

我想你只想得到这样的Values

List<string> flatList = alreadyThere.Values.ToList();

由于stringIEnumerable<char>SelectMany会返回IEnumerable<char>。它认为你试图将每个角色分别放入一个列表中。但我不认为你想要那个......

如果你有一个IEnumerable<IEnumerable<T>>,那么展平会很有用,如果你有一个Dictionary<string, List<string>>,那么该代码就可以工作。但在你的情况下,Values集合已经是{ {1}},所以调用IEnumereable<string>就足够了......