2012-05-16 18 views
9

Ho scritto la query utilizzando LinQ e ho utilizzato il metodo CopyToDataTable. A questa riga viene visualizzato l'errore di tipo di conversione implicito dal mio tipo di database a System.Data.DataRow.Come convertire IQueryable in DataTable

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

      return query.CopyToDataTable(); 

Qualche suggerimento?

risposta

5

CopyToDataTable richiede la raccolta di oggetti DataRow. Vedere Come: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow per risolvere questo problema.

AGGIORNAMENTO: Se la propria entità ha campo nullable, è possibile modificare il metodo ObjectShredder.ExtendTable. Trova luogo dove vengono aggiunte nuove colonne di tabella e rimuovere secondo parametro, che fornisce il tipo di dati in colonna (classe DataColumn non supporta i tipi di dati Null):

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

Ho implementato questa logica ma al query.copytodatatable sta mostrando un errore che non può implicare il tipo di conversione. – steve

+0

@nanicharan assicurati di usare 'CustomLINQtoDataSetMethods', non quelli da LINQ al set di dati. –

+0

Ho usato lo stesso metodo. Invierò il mio codice. Potete verificarlo una volta. – steve

Problemi correlati