C# 在会话中存储字典

C# 在会话中存储字典,c#,asp.net,C#,Asp.net,如何在会话中创建对象字典?更具体地说,我有一个对象列表:MyList将MyObject存储为以日期为参数的linq查询的结果 List<MyObject> Mylist; MyList = GetObjects(TheDate); 列出Mylist; MyList=GetObjects(日期); 现在,我想将MyList存储在字典中会话对象中,日期作为键。当页面需要特定日期的MyList时,首先搜索字典,如果该日期的MyList为空,则从GetObjects查询中获取数据,并将结

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

List<MyObject> Mylist;
MyList = GetObjects(TheDate);
列出Mylist;
MyList=GetObjects(日期);
现在,我想将MyList存储在字典中会话对象中,日期作为键。当页面需要特定日期的MyList时,首先搜索字典,如果该日期的MyList为空,则从GetObjects查询中获取数据,并将结果存储在会话中的字典中

最好的方法是什么


谢谢。

在会话中存储词典的示例:

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

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

public static class SessionVars
{
     public static Dictionary<DateTime> DateCollections
     {
        get { return (Dictionary<DateTime>)HttpContext.Current.Session["DateCollections"]; }
        set { HttpContext.Current.Session["DateCollections"] = value; }
     }
}
公共静态类SessionVars
{
公共静态字典数据集合
{
获取{return(Dictionary)HttpContext.Current.Session[“DateCollections”];}
set{HttpContext.Current.Session[“DateCollections”]=value;}
}
}
然后,在代码中的任何位置访问它将如下所示:

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

我尝试在名为ObjectsSessions的命名空间中的另一个文件中创建名为MyDictio的对象。当我尝试“公共类字典…”时,字典关键字上没有intellisense。我应该在何处声明此词典,以便它在每一页中都可用?请尝试使用System.Collections.Generic我在存储我的对象的文件(AppObjects.cs)和相应aspx的codebehind文件中都已经有了这个名称空间。它不应该是
公共类字典MyDictionary
-它应该是
公共字典MyDictionary
,我也没有得到intellisense。这张申报单到哪里去了?好的,谢谢!如果我在代码隐藏文件中声明此词典,我是否应该在应用程序的每个代码隐藏文件中声明它?如果您需要访问词典,您需要在每个代码隐藏文件中使用检索部分-存储部分是您创建新词典时自然需要的。在母版页中声明词典是一个好主意吗?我正在考虑创建10个左右的对象列表字典。
  var List<MyObject> mylist = SessionVars.DateCollections[TheDate];