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

然后我想遍历这本字典并调用键并将其添加到另一个字典

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 的值是否为空,然后获取 Key 并将键值复制到 temp 字典,但我收到错误。请帮忙 :)

我试图解决的问题是我希望能够在 dict 字典中搜索带有“”的值并获取密钥并将其存储在另一个字典 temp 中(稍后将保存第二个值)。我需要在 for 循环中执行此操作,因为我希望能够通过更改 i 的值返回。

我希望能够使用 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";
            }
        }
}

* 首先, noticetempList,而不是Dictionary,因为您只是添加键,没有key => 值(如果您可以更好地解释为什么需要将其作为字典,则可以更改)...
其次,请注意我曾经dict.Keys获取字典中的所有键。我也使用ToList()它,所以它可以在 foreach 循环中工作......

于 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(只有键,没有键+值)

如果您准确地解释您要解决的问题,这可能是您可以使用单个 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 回答