首先在代码中将 DbContext 转换为 Datatable entity framework

Convert DbContext to Datatable in Code first entity framework

您好,我正在尝试将 DbContext 结果转换为 DataTable。我有一个 classClientTemplateModel 其中 inherits DbContext。在这个 class 中,我有一个 DbSet 对象,即 public virtual DbSet<imagecomment> ImageComments { get; set; }。我正在使用 代码优先实体框架

这是我的查询。

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

这里我想把result转换成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

来源:

希望对您有所帮助!!!