2012-05-16 35 views
9

Escribí la consulta utilizando LinQ y utilicé el método CopyToDataTable. En esa línea, muestra un error de tipo de conversión implícita de mi tipo de base de datos a System.Data.DataRow.Cómo convertir IQueryable a DataTable

var query = from i in dbContext.Personaldetails 
      where i.ID == 1 
      select i; 

      return query.CopyToDataTable(); 

¿Alguna sugerencia?

Respuesta

5

CopyToDataTable requiere que se recoja DataRow objetos. Consulte Cómo: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow para resolver este problema.

ACTUALIZACIÓN: si su entidad tiene un campo con nulo, puede modificar el método ObjectShredder.ExtendTable. Buscar lugar donde se añaden nuevas columnas a la mesa, y quitar segundo parámetro, que proporciona el tipo de datos en la columna (clase DataColumn no soporta tipos de datos anulables):

foreach (PropertyInfo p in type.GetProperties()) 
{ 
    if (!_ordinalMap.ContainsKey(p.Name)) 
    { 
     DataColumn dc = table.Columns.Contains(p.Name) ? table.Columns[p.Name] 
      // do not provide column type 
      : table.Columns.Add(p.Name); 

     _ordinalMap.Add(p.Name, dc.Ordinal); 
    } 
} 
+0

He implementado que la lógica pero al query.copytodatatable muestra un error que no puede tipo de conversión implícita. – steve

+0

@nanicharan asegúrese de usar 'CustomLINQtoDataSetMethods', no los de LINQ al conjunto de datos. –

+0

Utilicé el mismo método. Enviaré mi código. Puede comprobarlo una vez. – steve

Cuestiones relacionadas