С# - 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
?
Ответы
Ответ 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>
.