在代码第一entity framework中将DbContext转换为Datatable

您好我正在尝试将DbContext结果转换为DataTable 。 我有一个classinherits DbContext ClientTemplateModel 。 在这个类中,我有一个DbSet对象,即public virtual DbSet ImageComments { get; set; } public virtual DbSet ImageComments { get; set; } public virtual DbSet ImageComments { get; set; } 。 我正在使用Code第一个entity framework

这是我的查询。

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

在这里,我想将result转换为DataTable 。 我该怎么转换呢?

您可以使用将Generic List转换为Datatable的Extension方法,也可以使用IQueryable / Ienumerable而不是IList,请遵循代码

  public static DataTable ToDataTable(this IList 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

希望这可以帮助 !!!