Подтвердить что ты не робот

С# - StringDictionary - как получить ключи и значения с помощью одного цикла?

Я использую коллекцию StringDictionary для сбора пар ключей.

например:.

StringDictionary KeyValue = new StringDictionary();
KeyValue.Add("A", "Load");
KeyValue.Add("C", "Save");

Во время извлечения я должен создать два foreach, чтобы получить ключи и значения (i.e)

foreach(string key in KeyValue.Values)
{
   ...
}

foreach(string key in KeyValue.Keys)
{
   ...
}

Есть ли способ получить пару в одиночном foreach?

4b9b3361

Ответ 1

Вы можете сделать цикл foreach в словаре, который даст вам DictionaryEntry на каждой итерации. Вы можете получить доступ к Key и Value свойствам от этого объекта.

foreach (DictionaryEntry value in KeyValue)
{
    // use value.Key and value.Value
}

Ответ 2

The StringDictionary можно повторить как DictionaryEntry items:

foreach (DictionaryEntry item in KeyValue) {
   Console.WriteLine("{0} = {1}", item.Key, item.Value);
}

Я бы предположил, что вместо этого вы используете более новый класс Dictionary<string,string>:

Dictionary<string, string> KeyValue = new Dictionary<string, string>();
KeyValue.Add("A", "Load");
KeyValue.Add("C", "Save");

foreach (KeyValuePair<string, string> item in KeyValue) {
   Console.WriteLine("{0} = {1}", item.Key, item.Value);
}

Ответ 3

У вас уже много ответов. Но в зависимости от того, что вы хотите сделать, вы можете использовать LINQ.

Предположим, вы хотите получить список ярлыков, в которых используется клавиша CTRL. Вы можете сделать что-то вроде:

var dict = new Dictionary<string, string>();
dict.Add("Ctrl+A", "Select all");
dict.Add("...", "...");

var ctrlShortcuts =
    dict
        .Where(x => x.Key.StartsWith("Ctrl+"))
        .ToDictionary(x => x.Key, x => x.Value);

Ответ 4

Одного должно быть достаточно:

foreach (string key in KeyValue.Keys)
{
  string value = KeyValue[key];

  // Process key/value pair here
}

Или я не понял ваш вопрос?

Ответ 5

foreach(DictionaryEntry entry in KeyValue)
{
    // ...
}

Ответ 6

Вы можете просто перечислить словарь. Он должен возвращать последовательность экземпляров DictionaryEntry.

Лучшей альтернативой является использование Dictionary<string, string>.