得到价值会议

时间:2011-07-18 13:02:50

标签: c# .net asp.net linq session

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
  }
这个工作很好!!!

但我不想使用存储过程

3 个答案:

答案 0 :(得分:1)

你必须这样做......

List<PropertyCompany> result = (List<PropertyCompany>)Session["summaryField"];

因为您存储了PropertyCompany

类型的集合

答案 1 :(得分:0)

我的查询不是表格。国际海事组织,你应该在List<T>这样的地方解决:

Session["summaryField"] = summaryFieldDB.ToList();

var result = (List<PropertyCompany>)Session["summaryField"];

答案 2 :(得分:0)

Linq to Sql使用延迟加载(延迟加载)意味着在您使用.ToList()等完成表达式之前不会执行任何数据,即指定您希望数据的方式

将此更改为(添加到列表)

var summaryFieldDB = (from b in dc.PropertyCompanies where (b.SummaryField.Contains(txtSearch)) select b).ToList()

和(使用List进行投射)

  List<PropertyCompany> result = (List<PropertyCompany>)Session["summaryField"];