在Code第一实体框架中将DbContext转换为Datatable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Code第一实体框架中将DbContext转换为Datatable相关的知识,希望对你有一定的参考价值。

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

这是我的查询。

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

希望这可以帮助 !!!

以上是关于在Code第一实体框架中将DbContext转换为Datatable的主要内容,如果未能解决你的问题,请参考以下文章

在实体框架中将行转换为列

调试实体框架 DBContext API 映射

在实体框架核心中将字典转换为ICollection

实体框架代码第一数据库恢复模型

在LINQ中将字符串转换为Int…到实体框架[重复]

在 C# 中将锁转换为异步