首先在代码中将 DbContext 转换为 Datatable entity framework
Convert DbContext to Datatable in Code first entity framework
您好,我正在尝试将 DbContext
结果转换为 DataTable
。我有一个 class
即 ClientTemplateModel
其中 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
来源:
希望对您有所帮助!!!
您好,我正在尝试将 DbContext
结果转换为 DataTable
。我有一个 class
即 ClientTemplateModel
其中 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
来源:
希望对您有所帮助!!!