получить значение сеанса - PullRequest
1 голос
/ 18 июля 2011
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 ]

1 голос
/ 18 июля 2011

Вы должны делать как ...

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

Так как вы храните коллекцию типа PropertyCompany

0 голосов
/ 18 июля 2011

В Linq to Sql используется отложенная загрузка (отложенная загрузка), что означает, что никакие данные не будут выполнены, пока вы не завершите выражение с помощью .ToList () и т. Д., Т. Е. Укажите, как вы хотите, чтобы ваши данные

Изменить это (Добавлено ToList)

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

А (отлит со списком)

  List<PropertyCompany> result = (List<PropertyCompany>)Session["summaryField"];
0 голосов
/ 18 июля 2011

Я запрашиваю не таблица. ИМО, вы должны остановиться на чем-то вроде List<T> здесь:

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

и

var result = (List<PropertyCompany>)Session["summaryField"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...