2013-01-09 36 views
0

我試圖編譯一個linq查詢。來自DataSet的ObjectContext

Func<ImportNewPermits_Enviance, String, EnumerableRowCollection<ImportNewPermits_Enviance._History_for_Permit__POI__Data_Row>> s_compiled = 
    CompiledQuery.Compile<ImportNewPermits_Enviance, String, EnumerableRowCollection<ImportNewPermits_Enviance._History_for_Permit__POI__Data_Row>>(
     (ctx, poiName) => from r in ctx._History_for_Permit__POI__Data_ 
          where r.POI_Name == poiName 
          select r); 

現在我面對錯誤There is no implicit reference conversion from ImportNewPermits_Enviance to System.Data.Objects.ObjectContext

ImportsNewPermits_Enviance是輸入DataSet的名稱。

如何從推導出ObjectContext類型化DataSet

+1

你不知道。 ObjectContext/CompiledQuery是實體框架的一部分,DataSet是經典ADO.NET的一部分。兩種獨立且幾乎不相關的數據訪問技術。 – luksan

+0

那麼如何編譯查詢DataSet的linq查詢 – clarity

回答

0

我不明白爲什麼你需要編譯查詢。如果您對類型化的DataSet使用Linq查詢,那是Linq To Objects查詢的一種類型,這意味着它全部在內存中執行,這應該非常快。但是,如果您真的想要將Linq編譯爲Objects查詢,則可以在要查詢的IEnumerable上調用AsQueryable(),然後存儲結果查詢以供以後評估。我相信這會導致Linq to Objects提供者編譯查詢,即:

var compiledQuery = from r in _History_for_Permit__POI__Data_.AsQueryable() 
          where r.POI_Name == poiName 
          select r