2015-01-02 14 views
7

Ciao Sto cercando di convertire il risultato DbContext in DataTable. Ne ho uno class e cioè ClientTemplateModel che inheritsDbContext. In questa classe ho un oggetto DbSet, ad esempio public virtual DbSet<imagecomment> ImageComments { get; set; }. Sto usando Codice prima struttura entità.Converti DbContext in Datatable nel primo framework di entità codice

Ecco la mia richiesta.

using (ClientTemplateModel context = new ClientTemplateModel(connectionString)) 
{ 
    var result = context.ImageComments.Where(p => p.Dcn == dcn).OrderByDescending(p => p.CommentsDateTime); 
} 

Eccomi voglio convertire il result in DataTable. Come posso convertirlo?

risposta

11

è possibile utilizzare il metodo di estensione che converte il vostro elenco generico Per Datatable, è possibile utilizzare IQueryable/IEnumerable anche al posto di IList, seguire il codice

public static DataTable ToDataTable<T>(this IList<T> data) 
    { 
     PropertyDescriptorCollection properties = 
      TypeDescriptor.GetProperties(typeof(T)); 
     DataTable table = new DataTable(); 
     foreach (PropertyDescriptor prop in properties) 
      table.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); 
     foreach (T item in data) 
     { 
      DataRow row = table.NewRow(); 
      foreach (PropertyDescriptor prop in properties) 
       row[prop.Name] = prop.GetValue(item) ?? DBNull.Value; 
      table.Rows.Add(row); 
     } 
     return table; 
    } 

se non avete usato metodo di estensione prima di vedere msdn

fonte: https://stackoverflow.com/a/5805044/1018054

Spero che questo aiuti !!!

+0

Grazie per la risposta. Come si può chiamare questo? –

+0

Ho usato il metodo di estensione ma nel mio caso come può chiamare questo metodo? –

+0

è possibile creare una classe statica e questo metodo all'interno e quindi result.ToDatatable(), ha dato msdn ref. per favore guarda in che altro su questo .. –

Problemi correlati