Convert DbContext to Datatable in Code first entity framework

c# datatable dbcontext entity-framework linq-to-sql


Hello I am trying to convert DbContext result to DataTable. I have one class i.e. ClientTemplateModel which inherits DbContext. In this class I have one DbSet object i.e. public virtual DbSet<imagecomment> ImageComments { get; set; }. I am using Code first entity framework.

Here is my query.

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

Here I am want convert the result into DataTable. How can I convert this?

1/2/2015 6:26:09 AM

Accepted Answer

you can use Extension method that converts your Generic List To Datatable , you can use IQueryable/Ienumerable also instead of IList , follow the code

  public static DataTable ToDataTable<T>(this IList<T> data)
        PropertyDescriptorCollection properties = 
        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;
        return table;

if you have not used extension method before please see msdn

source :

Hope this helps !!!

5/23/2017 11:46:11 AM

Related Questions


Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow