Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么样的数据结构是最不痛苦的数据表替换?_C#_.net_Ado.net_Datatable_Dataset - Fatal编程技术网

C# 什么样的数据结构是最不痛苦的数据表替换?

C# 什么样的数据结构是最不痛苦的数据表替换?,c#,.net,ado.net,datatable,dataset,C#,.net,Ado.net,Datatable,Dataset,我在ASP.NET缓存中存储了大量已排序的~10行2列/键值对——它们是dropdownlists的数据。现在它们都是数据表,这不是很节省空间(经验法则是,当数据存储在数据集中时,大小会增加10倍) 旧代码 DataTable table = dataAccess.GetDataTable(); dropDownList.DataSource = table; 希望有新的代码 Unknown data = dataAccess.GetSomethingMoreSpaceEfficient();

我在ASP.NET缓存中存储了大量已排序的~10行2列/键值对——它们是dropdownlists的数据。现在它们都是数据表,这不是很节省空间(经验法则是,当数据存储在数据集中时,大小会增加10倍)

旧代码

DataTable table = dataAccess.GetDataTable();
dropDownList.DataSource = table;
希望有新的代码

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

当存储在ASP.NET缓存中时,哪些预先存在的数据结构与DataTable足够相似,可以最大限度地减少代码中断并减少序列化大小?

键/值对或字典会更有效


Rick Strahl有一个很好的例子

键/值对或字典会更有效


Rick Strahl有一个很好的例子

基于会话ID将数据写入XML文件,然后将dropdownlists绑定到XMLDataSource

基于会话ID将数据写入XML文件,然后将dropdownlists绑定到XMLDataSource

我同意。他还提到数据已经分类;可能适合该任务的SortedDictionary或SortedList数据结构。啊,是的。忘了提到已经分类好的口味了!我必须将所有列重命名为“Key”和“Value”。当前代码按列[0]、列[“description”]等引用所有内容。这仍然是一个重要的候选数据结构。无需重命名,只需使用“Key”和“Value”作为列名引用它们:Dictionary dic=new Dictionary();dic.添加(“LGW”、“伦敦盖特威克”);dic.添加(“MCO”、“奥兰多国际”);this.drpIATA.DataSource=dic;this.drpIATA.DataTextField=“Value”;this.drpIATA.DataValueField=“Key”;this.lstStates.DataBind();我同意。他还提到数据已经分类;可能适合该任务的SortedDictionary或SortedList数据结构。啊,是的。忘了提到已经分类好的口味了!我必须将所有列重命名为“Key”和“Value”。当前代码按列[0]、列[“description”]等引用所有内容。这仍然是一个重要的候选数据结构。无需重命名,只需使用“Key”和“Value”作为列名引用它们:Dictionary dic=new Dictionary();dic.添加(“LGW”、“伦敦盖特威克”);dic.添加(“MCO”、“奥兰多国际”);this.drpIATA.DataSource=dic;this.drpIATA.DataTextField=“Value”;this.drpIATA.DataValueField=“Key”;this.lstStates.DataBind();这实际上就是编写一个缓存系统,将其对象存储在文件系统上而不是内存中。任何定制的滚动缓存系统都不需要我重新实现缓存逐出策略(不时从数据库重新加载等)和按需缓存逐出的UI,我已经针对ASP.NET cache.XML实现了它,它可以存储在内存中并添加到缓存中,而不需要做很多工作。我认为您需要的是一个好的哈希算法。SortedDictionary、Dictionary和SortedList有很多性能问题,您可以在Google中找到。它使您的工作变得简单,但并不能帮助您解决性能问题。这实际上就是编写一个缓存系统,将其对象存储在文件系统而不是内存中。任何定制的滚动缓存系统都不需要我重新实现缓存逐出策略(不时从数据库重新加载等)和按需缓存逐出的UI,我已经针对ASP.NET cache.XML实现了它,它可以存储在内存中并添加到缓存中,而不需要做很多工作。我认为您需要的是一个好的哈希算法。SortedDictionary、Dictionary和SortedList有很多性能问题,您可以在Google中找到。它使您的工作变得简单,但不能帮助您解决性能问题。