背景介绍
C#中实体类的操作十分简便,一般情况下不需要涉及ADO.NET,如果需要将实体类转化为Datatable,这个时候就需要手动写一个方法了,代码如下图所示:
public static class IEnumerableExtention
{
/// <summary>
/// 将实体类转化为Datatable
/// </summary>
/// <typeparam name="T">实体类类型</typeparam>
/// <param name="_ienu">实体对象</param>
/// <param name="_tableName">表名</param>
/// <returns>转化成的DataTable</returns>
public static DataTable ToDataTable<T>(this IEnumerable<T> _ienu, string _tableName = "tableFromList") where T : new()
{
DataTable resultTable = new DataTable(_tableName);
var pi = typeof(T).GetProperties(BindingFlags.Public|BindingFlags.Instance|BindingFlags.DeclaredOnly).ToList();
if (_ienu == null || pi == null || pi.Count == 0)
{
//当实体类为空的时候返回空的DataTable
}
else
{
pi.ForEach(p => { resultTable.Columns.Add(p.Name, p.PropertyType); });//生成Datatable列及列属性
foreach (var _ie in _ienu)
{
var dr = resultTable.NewRow();
foreach (var prop in pi)
{
if (prop.GetMethod != null)
{
dr.SetField(prop.Name, prop.GetValue(_ie));
}
}
resultTable.Rows.Add(dr);
}

最低0.47元/天 解锁文章
365

被折叠的 条评论
为什么被折叠?



