2011-07-18 65 views
1
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 
    } 

這工作很好!

但是我不想用存儲過程

回答

0

我查詢ISN是一張桌子。海事組織,你應該解決的東西像List<T>這裏:

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

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

坦克這工作。你是人類的大人物。 – ashkufaraz

1

你必須做這樣的工作...

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

既然你是存儲類型的集合PropertyCompany

+0

這一行說錯誤:無法投型的「System.Data.Linq.DataQuery'1 [PropertyCompany]」爲類型「對象System.Collections.Generic.List' 1 [PropertyCompany]」。 – ashkufaraz

0

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