我有一个包含gridview和日历的报告页面。当用户加载页面时,默认日期是今天,当他点击日历控件中的日期时,它会加载当天的报告数据。每个用户都有不同的报告,数据每天在300-500行之间。
目前,我有一个linq查询,以列表的形式返回一天的数据。鉴于每个查询的数据量相对较少,我想在会话中存储查询结果,以便我可以从会话中进行分页和排序,而无需返回数据存储。
我要做的是列表列表,以便在查询加载时保存数据,直到会话超时。例如,如果用户选择4-5个不同的日期,则每个查询都保存在会话中,然后如果再次单击其中一个日期,则函数首先检查数据是否在会话中:GetQueryFromSession( DateTime TheDate)。
我坚持这个。如何创建与会话对象一起使用的列表列表。感谢。
答案 0 :(得分:1)
在会话中存储字典
private Dictionary<DateTime, System.Data.DataTable> Data
{
get
{
if (Session["data"] == null)
{
Session[ "data" ] = new Dictionary<DateTime, System.Data.DataTable>();
}
return Session[ "data" ] as Dictionary<DateTime, System.Data.DataTable>;
}
set
{
Session[ "data" ] = value;
}
}
然后,您可以按日期保留结果集
您也可以使用列表字典 例如:
Dictionary<DateTime, List<YourObject>>
你的get QueryFromSession方法与此类似:
private DataTable GetQueryFromSession( DateTime TheDate)
{
return this.Data[TheDate];
}
或(如果您选择了List&lt;&gt;选项)
private List<YourObject> GetQueryFromSession( DateTime TheDate)
{
return this.Data[TheDate];
}
答案 1 :(得分:0)
为什么不使用会话名称,并根据所选日期为每个数据集创建一个唯一键?
您可以做的是按降序排列日期,将它们转换为字符串,并将它们连接起来以形成唯一ID。
然后使用ID将数据添加到会话对象。