3

我有一个

List<string> myList = new List<string>();

告诉我应该在一些输入数据中找到的所有内容。我想将其转换为

Dictionary<string, bool> myDict = Dictionary<string, bool>();

其中字典键与列表条目相同,并且所有值都是假的。然后,我将遍历数据,并在找到元素时更新字典值。

这看起来很简单,但是

Dictionary<string, bool> myDict = myList.ToDictionary<string, bool>(x => false);

由于错误而不起作用:

无法将类型隐式转换Dictionary<bool, string>Dictionary<string, bool>

4

2 回答 2

7

你想做这样的事情:

var dict = myList.ToDictionary(s => s, s => false);

您使用的重载将创建一个Dictionary<bool, string>, 键为 bool 并为列表中的字符串值赋值。(并且将 bool 作为键意味着,您只能有两个条目;)

此外,您很少需要像<string, bool>方法那样显式地指定类型参数,因为它们可以被推断出来,并且您可以将var其用于变量,就像上面所做的那样。

于 2013-02-11T04:27:18.543 回答
5

您可以使用Enumerable.ToDictionary并指定 false 作为值。

myDict  = myList.ToDictionary(r=> r, r=> false);

Dictionary<bool,string>如果您查看智能感知,您正在使用的代码将为您提供:

在此处输入图像描述

因此错误:

无法将类型“System.Collections.Generic.Dictionary”隐式转换为“System.Collections.Generic.Dictionary”

于 2013-02-11T04:26:41.763 回答