2015-01-02 26 views
7

Merhaba DataTable sonucuna DbContext sonucu dönüştürmeyi deniyorum. Bir class, yani inheritsDbContext olan ClientTemplateModel var. Bu sınıfta bir DbSet nesnesine, yani public virtual DbSet<imagecomment> ImageComments { get; set; }'a sahibim. Kod ilk varlık çerçevesi kullanıyorum.Kod İlk varlık çerçevesindeki DbContext'i Veritabanına Dönüştür

İşte benim sorgu.

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

Buradayım DataTable içine result dönüştürmek istiyoruz. Bunu nasıl değiştirebilirim?

cevap

11
msdn

bakın önce uzantısı yöntemi kullanmış değil eğer, kodu

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; 
    } 

izleyin ayrıca yerine IList ait IQueryable/IEnumerable kullanabilirsiniz Datatable için lütfen Jenerik Listesini dönüştürür Uzatma yöntemini kullanabilirsiniz

kaynak: Bu yardımcı olur https://stackoverflow.com/a/5805044/1018054

Umut !!!

+0

Cevabınız için teşekkür ederiz. Buna nasıl diyebilirim? –

+0

Uzantı yöntemini kullandım ama benim durumumda bu yöntemi nasıl arayabilirim? –

+0

bir statik sınıf ve bu yöntem içinde ve sonuç oluşturabilirsiniz.ToDatatable(), msdn ref verilmiş. Lütfen bunun için daha fazla bilgi için bakın .. –