如何在会话中创建对象字典?更具体地说,我有一个对象列表:MyList将MyObject存储为linq查询的结果,日期作为参数.
List<MyObject> Mylist;
MyList = GetObjects(TheDate);
Run Code Online (Sandbox Code Playgroud)
现在,我想将MyList存储在字典中的会话对象中,并以日期为关键字.当页面需要特定日期的MyList时,首先搜索字典,如果该日期为空,则从GetObjects查询中获取数据并将结果存储在会话中的字典中.
最好的方法是什么?
谢谢.
Bro*_*ass 10
用于在会话中存储字典的示例:
List<MyObject> Mylist;
MyList = GetObjects(TheDate);
Dictionary<DateTime> myDictionary = new Dictionary<DateTime>();
myDictionary[TheDate] = MyList;
Session["DateCollections"] = myDictionary;
Run Code Online (Sandbox Code Playgroud)
从会话中检索的示例(应null检查以确保它在那里):
Dictionary<DateTime> myDictionary = (Dictionary<DateTime>) Session["DateCollections"];
Run Code Online (Sandbox Code Playgroud)
我会围绕访问会话变量创建某种外观,这使得检索和设置值变得非常容易。另外,您不必担心会话变量名称是否正确,因为它们都存储在同一个位置。例子:
public static class SessionVars
{
public static Dictionary<DateTime> DateCollections
{
get { return (Dictionary<DateTime>)HttpContext.Current.Session["DateCollections"]; }
set { HttpContext.Current.Session["DateCollections"] = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中的任何位置访问它将如下所示:
var List<MyObject> mylist = SessionVars.DateCollections[TheDate];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16928 次 |
| 最近记录: |