在会话中存储字典

时间:2011-01-29 17:00:55

标签: c# asp.net

如何在会话中创建对象字典?更具体地说,我有一个对象列表:MyList将MyObject存储为linq查询的结果,并以日期作为参数。

List<MyObject> Mylist;
MyList = GetObjects(TheDate);

现在我想将MyList存储在字典中的会话对象中,并以日期为关键字。当页面需要特定日期的MyList时,首先搜索字典,如果该日期为空,则从GetObjects查询中获取数据并将结果存储在会话中的字典中。

最好的方法是什么?

感谢。

2 个答案:

答案 0 :(得分:10)

用于在会话中存储字典的示例:

List<MyObject> Mylist;
MyList = GetObjects(TheDate);
Dictionary<DateTime> myDictionary = new Dictionary<DateTime>();
myDictionary[TheDate] = MyList;
Session["DateCollections"] = myDictionary;

从会话中检索的示例(应该null检查以确保它在那里):

Dictionary<DateTime> myDictionary  = (Dictionary<DateTime>) Session["DateCollections"];

答案 1 :(得分:2)

我会围绕访问Session变量创建一些外观,这使得检索和设置值非常容易。另外,您不必担心会话var名称是正确的,因为它们都存储在同一个地方。例如:

public static class SessionVars
{
     public static Dictionary<DateTime> DateCollections
     {
        get { return (Dictionary<DateTime>)HttpContext.Current.Session["DateCollections"]; }
        set { HttpContext.Current.Session["DateCollections"] = value; }
     }
}

然后在代码中的任何位置访问它将如下所示:

  var List<MyObject> mylist = SessionVars.DateCollections[TheDate];