我有一个
List<string> myList = new List<string>();
告诉我在一些输入数据中应该找到的所有内容。我想把它转换成
Dictionary<string, bool> myDict = Dictionary<string, bool>();
其中字典键与列表条目相同,并且所有值都为false。然后我将遍历数据,并在找到元素时更新字典值。
这看似简单,但
Dictionary<string, bool> myDict = myList.ToDictionary<string, bool>(x => false);
由于错误,无效:
无法隐式将
Dictionary<bool, string>
类型转换为Dictionary<string, bool>
答案 0 :(得分:7)
你想做这样的事情:
var dict = myList.ToDictionary(s => s, s => false);
您正在使用的重载将创建Dictionary<bool, string>
,其中键为bool并从列表中为字符串值值。 (并且将bool作为键意味着,您只能有两个条目;)
此外,您很少需要为expcitly方法指定类型参数,例如<string, bool>
,因为它们可以被推断,并且您可以将var
用于变量,如上所述。
答案 1 :(得分:5)
您可以使用Enumerable.ToDictionary并指定false作为值。
myDict = myList.ToDictionary(r=> r, r=> false);
如果您查看intellisense,那么您使用的代码将为您Dictionary<bool,string>
提供:
因而错误:
无法隐式转换类型 'System.Collections.Generic.Dictionary'来 'System.Collections.Generic.Dictionary'