【发布时间】:2015-09-09 19:55:23
【问题描述】:
我什至不知道我是否走在正确的轨道上,但我尝试使用 Dictionary 来存储大数据和静态数据(如多语言数据)并在整个应用程序中使用它。此示例适用于 WinForms 应用程序。
在这种情况下,我有一个表格,其中包含各种参数,分为几组。该表由以下字段组成:GROUP_CODE, PARAMETER_KEY, PARAMETER_VALUE... 它只包含许多值,如本例所示:
GROUP_CODE:“MAILING_INFO”
PARAMETER_KEY: 'SendMailAfterProcessIsDone'
PARAMETER_VALUE:'a@b.com'
没有问题或任何东西可以保存并从数据库中获取数据。我唯一的问题是我将如何处理这些数据......
我的 ParameterValues 类包含以下我从表中选择的相同字段...
public class ParameterValues
{
private string groupCode;
private string parameterKey;
private string parameterValue;
public string GroupCode
{
get { return groupCode; }
set { groupCode = value; }
}
public string ParameterKey
{
get { return parameterKey; }
set { parameterKey = value; }
}
public string ParameterValue
{
get { return parameterValue; }
set { parameterValue = value; }
}
}
在另一个名为 CacheHelper 的类中,我试图将此对象与 GROUP_CODE 值作为键放入字典中。 (希望这是有道理的)
public class CacheHelper
{
public Dictionary<string, ParameterValues> LoadParameterCache2()
{
//Dictionary<string, ParameterValues> objList = new Dictionary<string, ParameterValues>();
Dictionary<string, List<ParameterValues>> objList = new Dictionary<string, List<ParameterValues>>();
//call the values from the database blah blah
while (rdr.Read())
{
ParameterValues cacheObj = new ParameterValues();
cacheObj.ParameterKey = rdr.GetString("PARAMETER_KEY");
cacheObj.ParameterValue = rdr.GetString("PARAMETER_VALUE");
objList.Add(rdr.GetString("GROUP_CODE"), /*List ParameterValues goes here blah blah*/);
}
return objList; //and finally return it to the main application thread
}
}
我必须按照数据库中的 GROUP_CODE 值对其进行分组,因为 Dic 的“键”必须是唯一的……我知道……
由于我认为还不够清楚,因此我试图在下图中展示我实际尝试做的事情......
我根本不能把它分组。请有人告诉我一种方法...如果这是一种将其用作非常大数据(我的意思是数千行)的应用程序缓存的好方法,我也想听听您的想法。
非常感谢!
【问题讨论】:
-
您可能想查看一个
KeyedCollection,它允许您使用GroupCode参数作为字典的键,而您无需手动将其设置为键。但是,这并不能解决您的唯一性问题,因为 KeyedCollection 在其键上具有与 Dictionary 相同的限制,只是想让您了解类型。 -
您的方法签名与您的返回类型不匹配。
-
System.Runtime.Caching 有一个用于处理应用程序缓存需求的 MemoryCache 类。我已经将它用于很多大的事情,包括本地化字符串。
-
@StingyJack 这不是重点,哈哈...好吧,但我也可以在 ASP.Net 应用程序中使用它吗?
-
你能解释一下你所说的“我根本不能把它分组”是什么意思吗?为什么不?您是否收到错误或其他问题不起作用?
标签: c# list dictionary grouping