您好,我正在尝试将DbContext
结果转换为DataTable
。我有一个class
即ClientTemplateModel
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
希望这可以帮助 !!!