2014-01-27 115 views
1

我需要將商店的開放時間存儲在一個文件中,每個商店有7個不同的開放時間,每週一個,每週有一個,我有一個2000個商店。在C#中創建詞典/查找表#

不是浪費空間,我想我只能寫一個indexkey,並且只在不同的文件中存儲彼此不相等的開放時間。但是爲了做到這一點,我需要一個哈希表/查找表來檢查他們是否打開我插入它的時間,或者它不在文件中。

這是迄今爲止代碼:

orarioString = DateToSec(Opening) + DateToSec(Closing); 
int value; 
if(orarioDict.TryGetValue(orarioString, out value)) 
{ 
    sw.Write("{0,4}", value); 
} 
else 
{ 
    orarioDict.Add(orarioString, index++); 
    sw.Write("{0,4}", index); 
} 

orarioDict is a Dictionary<String,int>,但我不知道這是正確的數據結構,因爲我需要插入並手動讓我的「指數」的軌道。有一個更好的方法嗎?

+0

會使用輕量級數據庫作爲選項嗎?在文件中存儲這麼多信息似乎是SQLite或類似的工作。 –

+0

如果只有7 * 2000日期時間存儲(112ko),我不明白爲什麼你會擔心浪費的空間。 –

+0

不幸的是我不能這樣做,因爲這些數據存儲在數據庫中,我需要提取它們並寫入到另一個程序的輸入文件中。 – Federico

回答

2

我認爲這裏最好的解決方案是Dictionary<string, List<int>>。這是商店密鑰到每個商店的時間列表的邏輯映射。我認爲這裏對空間的擔心是沒有根據的,尤其是因爲List<int>的尺寸可以精確到所需條目的數量。

+1

因爲有已知的開放時間數 - 7,每天一個,我認爲Array是比List更合乎邏輯的選擇。然後你甚至可以將它們存儲在DayOfWeek的索引中。 –

+0

@MichaelBray真的,我仍然有點不確定是否有7或7的最大值。但在某些constrictts數組可能是一個更好的選擇 – JaredPar

+0

@JaredPar問題是這個開放時間是每個商店7,但他們可以如「9-15」或「8:30-23」「10-12」。因此,2000年的店鋪預計會有100-200個不同的開放時間,大多數人喜歡「9-18」而不是幾個小時的時間 – Federico