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
  }

这个工作很好!!

但是我不想使用存储过程

get value Session

你必须像…

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"];