2013-08-22 50 views
1

所以我有一個是建立就像一本字典:如何得到鍵和值從字典

Dictionary<DateTime, List<Double>> 

的日期和時間裏,我從一個Excel電子表格拉,然後我的整數是金額。這些列看起來像這樣:

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

只是普通的foreach? – 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