如何在会话中创建对象字典?更具体地说,我有一个对象列表:MyList将MyObject存储为linq查询的结果,并以日期作为参数。
List<MyObject> Mylist;
MyList = GetObjects(TheDate);
现在我想将MyList存储在字典中的会话对象中,并以日期为关键字。当页面需要特定日期的MyList时,首先搜索字典,如果该日期为空,则从GetObjects查询中获取数据并将结果存储在会话中的字典中。
最好的方法是什么?
感谢。
答案 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];