将代码第一实体框架中的DbContext转换为Datatable [英] Convert DbContext to Datatable in Code first entity framework
问题描述
您好,我想将 DbContext
结果转换为 DataTable
。我有一个类
ie ClientTemplateModel
哪个继承
DbContext
。在这个类中,我有一个 DbSet
对象,即
public virtual DbSet< imagecomment> ImageComments {get;组; }
。我使用代码第一个实体框架。
Hello I am trying to convert DbContext
result to DataTable
. I have one class
i.e. ClientTemplateModel
which inherits
DbContext
. In this class I have one DbSet
object i.e.
public virtual DbSet<imagecomment> ImageComments { get; set; }
. I am using Code first entity framework.
这是我的查询。
using (ClientTemplateModel context = new ClientTemplateModel(connectionString))
{
var result = context.ImageComments.Where(p => p.Dcn == dcn).OrderByDescending(p => p.CommentsDateTime);
}
这里我想转换结果
into DataTable
。如何转换这个?
Here I am want convert the result
into DataTable
. How can I convert this?
推荐答案
您可以使用扩展方法将您的通用列表转换为数据,您可以使用IQueryable / Ienumerable而不是IList,请按照代码
you can use Extension method that converts your Generic List To Datatable , you can use IQueryable/Ienumerable also instead of IList , follow the code
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
if you have not used extension method before please see msdn
source: http://stackoverflow.com/a/5805044/1018054
希望这有助于!!!
这篇关于将代码第一实体框架中的DbContext转换为Datatable的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!