Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在会话中存储之前强制计算匿名类型查询_C#_Asp.net_Linq To Sql_Operator Precedence - Fatal编程技术网

C# 在会话中存储之前强制计算匿名类型查询

C# 在会话中存储之前强制计算匿名类型查询,c#,asp.net,linq-to-sql,operator-precedence,C#,Asp.net,Linq To Sql,Operator Precedence,我需要带回几个特定于用户的数据集,以绑定到经常(重新)加载(可能无法利用回发数据)的搜索页面的下拉列表。我想点击数据库一次,并在必要时从会话数据填充下拉列表,而不是再次从数据库获取 当我设置会话(下面最后一行)时,它会存储评估的结果,还是每次引用会话都会重新运行查询?如果是后一种情况,那么在设置会话之前强制求值的最佳方法是什么,同时仍然保持匿名类型的使用 public class CustomClass { public IQueryable Results1 { get; set; }

我需要带回几个特定于用户的数据集,以绑定到经常(重新)加载(可能无法利用回发数据)的搜索页面的下拉列表。我想点击数据库一次,并在必要时从会话数据填充下拉列表,而不是再次从数据库获取

当我设置会话(下面最后一行)时,它会存储评估的结果,还是每次引用会话都会重新运行查询?如果是后一种情况,那么在设置会话之前强制求值的最佳方法是什么,同时仍然保持匿名类型的使用

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();
只需在
result1
result2
上使用
.ToList()

return  
    new CustomClass 
    { 
        Results1 = results1.ToList(), 
        Results2 = results2.ToList() 
    }; 

我不确定知道答案是否有帮助。如果无法将会话[“结果”]转换回其原始类型,您打算如何使用它?也许您应该使用
System.Tuple
而不是匿名类型?这将允许您创建
IQueryable
属性。@hvd,var results=(CustomClass)会话[“results”];ddl.DataSource=results.Results1;啊,好吧,这样你就不需要从代码中访问属性了。
.ToList()
的结果只是
IEnumerable
,而不是
IQueryable
,因此这会导致编译器错误。因此,请更改
自定义类中的类型。@John Saunders,我不相信我可以将CustomClass结果类型更改为列表,并且仍然保持匿名类型。重要的是,我不需要为所有这些数据集创建强类型类。我的意思是将它们更改为
IEnumerable