get value Session
本文关键字:Session value get | 更新日期: 2023-09-27 18:02:19
DataClassesDataContext dc = new DataClassesDataContext();
var summaryFieldDB = from b in dc.PropertyCompanies where (b.SummaryField.Contains(txtSearch)) select b;
Session["summaryField"] = summaryFieldDB;
现在如何访问字段summaryFiledDB??
如果使用这个
System.Data.Linq.Table<PropertyCompany> result = (System.Data.Linq.Table<PropertyCompany>)Session["summaryField"];
这一行当运行程序时显示错误:无法转换类型为'System.Data.Linq.DataQuery 1[PropertyCompany]' to type 'System.Data.Linq.Table
1[PropertyCompany]的对象
如果我使用类似FullSearch
的存储过程
Session["search"] = dc.FullSearch("anv", true, true, true, true, true, true, true, true, true, true, true);
System.Data.Linq.ISingleResult<FullSearchResult> b = (System.Data.Linq.ISingleResult<FullSearchResult>)Session["search"];
foreach(var item in b)
{
//work with fields
}
这个工作很好!!
但是我不想使用存储过程
你必须像…
List<PropertyCompany> result = (List<PropertyCompany>)Session["summaryField"];
既然你存储的是PropertyCompany
类型的集合
我的查询不是一个表。在我看来,你应该选择像List<T>
这样的东西:
Session["summaryField"] = summaryFieldDB.ToList();
和
var result = (List<PropertyCompany>)Session["summaryField"];
Linq to Sql使用延迟加载(延迟加载)意味着没有数据被执行,直到你用。tolist()等完成你的表达式,即指定你想要的数据
将其改为(Added ToList)
var summaryFieldDB = (from b in dc.PropertyCompanies where (b.SummaryField.Contains(txtSearch)) select b).ToList()
And(用List强制转换)
List<PropertyCompany> result = (List<PropertyCompany>)Session["summaryField"];