2011-10-07 27 views
2

我有以下代碼:廣東話轉換LINQ查詢變種以數據表

var _permiso = from P in _db.clsPermiso 
       select P; 

var _pagina = from P in _db.clsPagina.AsEnumerable() 
       select P; 

var _perfil = from P in _db.clsPerfil 
       select P; 

IEnumerable<DataRow> query = from permiso in _permiso.AsEnumerable() 
      join perfil in _perfil.AsEnumerable() 
       on permiso.ID equals perfil.ID 
      join pagina in _pagina.AsEnumerable() 
       on permiso.ID equals pagina.ID 
      where (permiso.Acceso == true) && (permiso.Perfil.ID == Convert.ToInt32(strIDPerfil)) 
      select pagina; 

我已經收集MSDN頁面上的一些信息,它告訴我使用IEnumerable<DataRow>然後,ASIGN是query可變進一個DataTable VAR是這樣的:

DataTable _dtResult = query.CopyToDataTable();

但即時得到錯誤的select pagina聲明:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<MyApp.Models.clsPagina>' to 'System.Collections.Generic.IEnumerable<System.Data.DataRow>'. An explicit conversion exists (are you missing a cast?)

THX的建議

+0

的我是從MVC3越來越 '公共類MyAppDB一類:的DbContext { 公共DbSet clsPagina {獲得;設置;} }' – Luis

+0

它沒有,它給了我下面的錯誤'錯誤無法將類型'MyApp.Models.clsPagina'轉換爲'System.Data.DataRow'' – Luis

回答

2

轉換可枚舉並不一定使用基本類型使用隱式轉換。您可能不得不在LINQ查詢中將結果「pagina」作爲DataRow進行投放。

不知道你的類/類型定義,我只是猜測,但我相信你想你的LINQ查詢的最後一行是:

select (DataRow)pagina; 

有你想要的結果的具體原因更原始?

+0

已經嘗試轉換,它給了我以下錯誤:錯誤無法將類型'MyApp.Models.clsPagina'轉換爲'System.Data.DataRow'' – Luis

+2

好了,現在閱讀您的其他評論,我敢打賭你從一個實體框架類獲取這些數據? EF不是ADO.NET。它們是訪問數據的完全不同的方式。 你可以給我們一個鏈接到你正在閱讀的MSDN頁面嗎?我想你正在試圖合併兩種不同的技術。 –

+0

我需要在一個DataTable中循環它在一個Foreach,idk,如果我應該使用一個列表,而不是... – Luis