2010-06-01 73 views
0

我在ASP.NET緩存中存儲了大量排序的〜10行2列/鍵值對 - 它們是下拉列表的數據。目前他們都是DataTables,這不是非常節約空間(當數據存儲在數據集中時,經驗法則的規模增加了10倍)。什麼數據結構將是最痛苦的DataTable替換?

舊代碼

DataTable table = dataAccess.GetDataTable(); 
dropDownList.DataSource = table; 

希望對新代碼

Unknown data = dataAccess.GetSomethingMoreSpaceEfficient(); 
dropDownList.DataSource = data; 

什麼預先存在的數據結構是數據表中,將盡量減少代碼破損和存儲在ASP.NET時減少系列大小非常相似緩存?

回答

3

鍵/值對或詞典會更有效率。

裏克施特拉爾有一個很好的例子http://www.west-wind.com/Weblog/posts/32508.aspx

+1

我同意。他還提到數據被排序; SortedDictionary或SortedList數據結構可能適合於該任務。 – 2010-06-01 12:29:40

+0

啊是的。忘了提及現成的排序口味! – hearn 2010-06-01 13:05:23

+0

我必須將所有列重命名爲「Key」和「Value」。當前代碼引用Column [0],Column [「description」]等所有內容。但是,這是一個重要的候選數據結構。 – MatthewMartin 2010-06-01 13:17:50

0

將數據寫入到一個XML文件,基於會話ID,然後綁定dropdownlists到的XmlDataSource

+0

這實際上是編寫一個將其對象存儲在文件系統而不是內存中的緩存系統。任何自定義的滾動緩存系統不需要我重新實現緩存逐出策略(從數據庫不時重新加載等)和UI按需緩存驅逐,我已經實現了針對ASP.NET緩存。 – MatthewMartin 2010-06-01 13:14:57

+0

XML可以存儲在內存中,並添加到緩存中,而不需要做大量的工作。 – 2010-06-01 13:59:01

+0

我認爲你需要的是一個很好的散列算法。 SortedDictionary, Dictionary和SortedList有很多性能問題,您可以在Google中找到。它使您的工作變得簡單,但不會幫助您解決性能問題。 – 2010-06-01 14:15:14

相關問題