我有这行代码:
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
?我该如何解决?
答案 0 :(得分:7)
我想你只想得到这样的Values
:
List<string> flatList = alreadyThere.Values.ToList();
由于string
是IEnumerable<char>
,SelectMany
会返回IEnumerable<char>
。它认为你试图将每个角色分别放入一个列表中。但我不认为你想要那个......
如果你有一个IEnumerable<IEnumerable<T>>
,那么展平会很有用,如果你有一个Dictionary<string, List<string>>
,那么该代码就可以工作。但在你的情况下,Values
集合已经是{ {1}},所以调用IEnumereable<string>
就足够了......