0

辞書で検索しようとしています。私は2つの辞書を持っています:

Dictionary<int, string> dict = new Dictionary<int, string>()
Dictionary<int, int> temp = new Dictionary<int, int>()

次に、この辞書に次の情報を入力しました。

dict.Add(123, "");
dict.Add(124, ""); //and so on

次に、この辞書をループしてキーを呼び出し、それを他の辞書に追加したい

for (int i = 0; i < dict.Count; i++)
{
   if (dict[i] == "")
   {
        temp.Add(dict[dict.ElementAt(i).Key],0);
        dict[dict.ElementAt(i).Value] = "Moved";
   }
}

この forloop 内で他のことを行う必要があるため、それを foreach ループに変更することはできません。Dictionary dict の値が空であるかどうかを確認してから、キーを取得してキー値を一時辞書にコピーしようとしていますが、エラーが発生しています。助けてください :)

私が解決しようとしている問題は、「」で値を辞書辞書で検索し、キーを取得して別の辞書一時に保存できるようにしたいということです(後で2番目の値を保持します)。iの値を変更して元に戻せるようにしたいので、forループでこれを行う必要があります。

i を使用して、dict 辞書からキーと値の両方を選択できるようにしたいと考えています。

私が得ていたエラーは、単に文字列からintに変換することでした.dictからint変数にキーを格納することさえできません。

4

4 に答える 4

0

私はこれがあなたが探しているものだと思います:

Dictionary<int, string> dict = new Dictionary<int, string>();
List<int> temp = new List<int>();


dict.Add(123, "");
dict.Add(124, ""); //and so on

foreach (int key in dict.Keys.ToList())
{
            if (dict[key] == "")
            {
                temp.Add(key);
                dict[key] = "Moved";
            }
        }
}

*まず、注意temp辞書ではなくリストです。キーを追加するだけなので、キー=>値はありません(これが辞書として必要な理由をよりよく説明できる場合は、これを変更できます)... 次に、注意以前は辞書のすべてのキーを取得していました。foreachループで動作できるように使用しました...
dict.KeysToList()

于 2013-02-26T21:50:55.510 に答える
0

辞書定義のコンパイルエラーが発生していますか

Dictionary<int, int> temp = new Dictionary<int, temp>(); // int, temp?

もしそうなら、

Dictionary<int, int> temp = new Dictionary<int, int>(); // int, int

または、これでエラーが発生します:

 temp.Add(dict[dict.ElementAt(i).Key]);

値のないキーだけを追加しているからです。それは次のようなものになります

 temp.Add(i, dict[i]); ?

キー値を保持するためにtempを使用しているだけの場合、ディクショナリは必要ありません。おそらくHashSet(キーのみ、キー+値なし)です。

解決しようとしていることを正確に説明する場合、これはおそらく1つのlinqステートメントで簡単に実行できることですか?

于 2013-02-26T21:51:47.507 に答える
0

なぜtemp辞書なのですか?List<int>空の(null?)値を持つ辞書のすべてのキーでを 使用します。

List<int> keysWithEmptyValuesInDictionary = dict
    .Where(kvp => string.IsNullOrEmpty(kvp.Value))
    .Select(kvp => kvp.Key)
    .ToList();
foreach (int key in keysWithEmptyValuesInDictionary)
{
    dict[key] = "moved";
}
于 2013-02-26T21:51:51.757 に答える
0

一時辞書に値を入れる必要があります。私は0を選びました。

        Dictionary<int, string> dict = new Dictionary<int, string>();
        Dictionary<int, int> temp = new Dictionary<int, int>();

        dict.Add(123, "");
        dict.Add(124, ""); //and so on

        int[] keys = dict.Keys.ToArray();
        for (int i = 0; i < dict.Count; i++)
        {
            if (dict[keys[i]] == "")
            {
                temp.Add(keys[i],0);
                dict[keys[i]] = "Moved";
            }
        }
于 2013-02-26T22:05:06.323 に答える