Как я могу применить индексатор к Dictionary.Values (C# 3.0)
Я сделал программу
string[] arrExposureValues = stock.ExposureCollection[dt].Values.ToArray();
for(int i = 0; i < arrExposureValues.Length; i++)
Console.WriteLine(arrExposureValues[i]);
Ничего плохого и отлично работает.
Но возможно ли сделать что-то вроде ниже
for(int i = 0; i < stock.ExposureCollection[dt].Count; i++)
Console.WriteLine(stock.ExposureCollection[dt].Values[i]);
Это только для моих знаний (в основном, пытаясь сделать то же самое в одной строке).
Примечание. ExposureCollection - это Dictionary<DateTime, Dictionary<string, string>>
Прежде всего, у меня есть сомнения, если это вообще возможно!
Я использую C# 3.0.
Благодарю.
4 ответа
Решение
Прежде всего, какова ваша задача? Перечислять словарь и перечислять внутренний словарь одновременно?
foreach(var item in dic)
{
foreach(var inner in item.Value)
{
Console.WriteLine("key={0}, inner key={1}, inner value={2}",
item.Key, inner.Key, inner.Value);
}
}
Вы можете перечислить список stock.ExposureCollection[dt].Key, используя foreach.
foreach( string key in stock.ExposureCollection[dt].Keys ) {
Console.WriteLine(stock.ExposureCollection[dt][key]);
}
for(int i = 0; i < stock.ExposureCollection[dt].Count; i++)
Console.WriteLine(stock.ExposureCollection[dt].Values.ElementAt(i));
Попробуйте SortedList - у него есть свойства, такие как значения и ключи, которые вы можете индексировать.