我需要带回几个用户特定的数据集以绑定到经常(重新)加载(可能无法使用回发数据)的搜索页面的下拉列表。我想访问数据库一次,并在必要时从会话数据中填充下拉列表,而不是再次从数据库中获取它。
当我设置会话(最后一行,下面)时,它会存储评估结果,还是每次都会引用会话重新运行查询?如果是后者,那么在设置会话之前强制评估同时仍保持使用匿名类型的最佳方法是什么?
public class CustomClass
{
    public IQueryable Results1 { get; set; }
    public IQueryable Results2 { get; set; }
}
public static CustomClass GetResults()
{
    var results1 = (
        from t in Table
        select new
        {
            t.Id,
            t.Value
        };
    var results2 = (
        from t in Table
        select new
        {
            t.Id,
            t.Value
        };
    return 
        new CustomClass
        {
            Results1 = results1,
            Results2 = results2
        };
}
*****
Session["Results"] = GetResults();