无法将LINQ Query var转换为DataTable

时间:2011-10-07 17:29:16

标签: c# linq linq-to-sql datatable

我有以下代码:

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>,然后将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?)

建议中的提示

1 个答案:

答案 0 :(得分:2)

转换枚举不一定使用基类型使用的隐式转换。您可能必须在LINQ查询中将结果“pagina”显式地转换为DataRow。

不知道你的类/类型定义,我只是猜测,但我相信你希望你的LINQ查询的最后一行是:

select (DataRow)pagina;

您是否有特定原因希望结果更原始?