2013-08-22 3 views
1

Поэтому у меня есть словарь, который устанавливается как:Как получить ключи и значение из словаря

Dictionary<DateTime, List<Double>> 

Дата и время: месяц я достаю из таблицы первенствовать, а затем мои целыми является сумма в долларах , Колонны выглядят так:

7/1/10 | 6/1/10 
---------------- 
100.00 | 90.00 
---------------- 
    3.00 | 20.00 
---------------- 
35.00 | 10.00 

и т. Д. И т. Д. Около 6 месяцев. Мне нужно получить эти ключи и значения. Мне нужно поместить его в мою базу данных. Например, для значений 100.00, 3.00, 35.00 все они координируются с месяцем 7/1/10 (первый ключ имеет 3 значения под ним и т. Д.)

Может ли кто-нибудь просто показать мне, как перебирать эти вещи? Когда я отлаживал свой словарь, помещал всю информацию в правильно, но я не могу вытащить их обратно.

+2

просто Еогеасп? – alex

ответ

5

Просто перебирать их непосредственно в вложенном цикле

Dictionary<DateTime, List<Double>> map; 
foreach (var pair in map) { 
    DateTime dt = pair.Key; 
    foreach (double value in pair.Value) { 
    // Now you have the DateTime and Double values 
    } 
} 
+0

Gahhh, чтобы поститься для меня лет! –

+0

@AMR Он слишком быстро для всех нас. Но на этот вопрос люди будут прыгать. – gunr2171

+1

@ JaredPar надеюсь, что вы не возражаете, я улучшил ваш ответ, перемещая объявление 'dt', поэтому он устанавливается только один раз за значение, и его область имеет больше смысла. –

2
foreach(KeyValuePair<DateTime,List<Double> pair in dictionaryName){ 
    DateTime dt = pair.Key; 
    List<Double> doubleList = pair.Value; 

    //With this method you now can step through each key value pair 
} 
1

Вы можете сделать это для особых значений (если вы знаете, ключ)

List<double> values = myDictionary[someDateValue]; 

И вы можете использовать foreach для итерация через все пары ключей

foreach(var pair in myDictionary) 
{ 
    DateTime keyValue = pair.Key; 
    List<double> valueValue = pair.Value; 
} 
1

Или с LINQ:

var myDict = new Dictionary<DateTime, List<Double>>(); 
var julyValues= myDict.Where(r => r.Key == new DateTime(2010, 7, 1)) 
         .Select(r => r.Value); 

или GroupBy:

var groupValues= myDict.GroupBy(r => r.Key) 
         .Select(grp => 
           new { grp.Key, 
            values = grp.Select(r => r.Value) 
            } 
           ); 
+0

. Будет выбран только ключ, что полезно, только если вы используете его для выбора значений из словаря (я думаю, вам нужно включить эту часть для завершения ответа). – gunr2171

+0

отредактирован, правильно? – speti43

Смежные вопросы