2015-01-02 18 views
7

Xin chào Tôi đang cố gắng chuyển đổi DbContext kết quả thành DataTable. Tôi có một số class, nghĩa là ClientTemplateModelinheritsDbContext. Trong lớp học này, tôi có một đối tượng DbSet tức là public virtual DbSet<imagecomment> ImageComments { get; set; }. Tôi đang sử dụng Mã pháp nhân đầu tiên của khung.Chuyển đổi DbContext thành Có thể định dạng được trong khung thực thể mã đầu tiên

Đây là truy vấn của tôi.

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

Ở đây tôi muốn chuyển đổi result thành DataTable. Làm thế nào tôi có thể chuyển đổi điều này?

Trả lời

11

bạn có thể sử dụng phương pháp mở rộng có thể chuyển đổi Danh sách Generic của bạn Để DataTable, bạn có thể sử dụng IQueryable/IEnumerable cũng thay vì IList, hãy làm theo các mã

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

nếu bạn chưa sử dụng phương pháp mở rộng trước khi xin vui lòng xem msdn

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

Hy vọng điều này sẽ giúp !!!

+0

Cảm ơn bạn đã trả lời. Làm thế nào có thể gọi điều này? –

+0

Tôi đã sử dụng phương pháp mở rộng nhưng trong trường hợp của tôi làm thế nào có thể gọi phương pháp này? –

+0

bạn có thể tạo một lớp tĩnh và phương thức này bên trong và sau đó result.ToDatatable(), i hv cho msdn ref. hãy nhìn vào đó để biết thêm về điều này .. –

Các vấn đề liên quan