Как я могу применить индексатор к 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 - у него есть свойства, такие как значения и ключи, которые вы можете индексировать.

Другие вопросы по тегам