Как я могу применить индексатор к Dictionary.Values ​​(C # 3.0) - PullRequest
1 голос
/ 01 июня 2010

Я сделал программу

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 ]

1 голос
/ 01 июня 2010

Вы можете перечислить по stock.ExposureCollection [dt]. Ключи, используя foreach.

foreach( string key in stock.ExposureCollection[dt].Keys ) {
  Console.WriteLine(stock.ExposureCollection[dt][key]);
}
1 голос
/ 01 июня 2010

Прежде всего, какова ваша задача?Перечислять словарь и перечислять внутренний словарь одновременно?

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);
    }
}
0 голосов
/ 01 июня 2010
for(int i = 0; i < stock.ExposureCollection[dt].Count; i++)     
    Console.WriteLine(stock.ExposureCollection[dt].Values.ElementAt(i)); 
0 голосов
/ 01 июня 2010

Попробуйте SortedList - у него есть свойства, такие как значения и ключи, которые можно проиндексировать.

...