不能将LINQ查询变量转换为数据表

本文关键字:转换 数据表 变量 查询 LINQ 不能 | 更新日期: 2023-09-27 18:10:37

我有以下代码:

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变量:

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?)

不能将LINQ查询变量转换为数据表

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

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

select (DataRow)pagina;

是否有一个特定的原因,您希望结果更原始?