2015-01-02 84 views
7

您好,我正在嘗試將DbContext結果轉換爲DataTable。我有一個classClientTemplateModel其中inheritsDbContext。在這個類中,我有一個DbSet對象,即 public virtual DbSet<imagecomment> ImageComments { get; set; }。我正在使用代碼第一個實體框架在代碼第一個實體框架中將DbContext轉換爲數據表

這是我的查詢。

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

在這裏,我想result轉換成DataTable。我該如何轉換?

回答

11

您可以使用您的泛型列表轉換爲DataTable的擴展方法,你可以使用的IQueryable/IEnumerable的同時,而不是IList中,按照代碼

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

,如果你還沒有使用擴展方法請參見msdn

來源:https://stackoverflow.com/a/5805044/1018054

希望這有助於!

+0

謝謝你的回覆。怎麼調用這個? –

+0

我使用了擴展方法,但在我的情況下如何調用這個方法? –

+0

你可以在裏面創建一個靜態類和這個方法,然後在result.ToDatatable()中給出msdn ref。請在此查看更多相關信息.. –

相關問題