3

私は

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>

4

2 に答える 2

7

あなたはこのようなことをしたいです:

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

使用していたオーバーロードによりDictionary<bool, string>、キーがboolになり、リストの文字列値が評価されます。(そして、キーとしてブール値を持つということは、2つのエントリしか持てないことを意味します;)

また、メソッドのように型パラメーターを明示的に指定する必要はほとんどありません。<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 に答える