public static class DataTableToEntity
{
//单行datatable数据转换为对象::
public static T TableToEntity<T>(DataTable dt, int rowindex = 0, bool isStoreDB = true)
{
Type type = typeof(T);
T entity = Activator.CreateInstance<T>();
if (dt == null)
{
return entity;
}
DataRow row = dt.Rows[rowindex];
PropertyInfo[] pArray = type.GetProperties();
foreach (PropertyInfo p in pArray)
{
if (!dt.Columns.Contains(p.Name) || row[p.Name] == null || row[p.Name] == DBNull.Value)
{
continue;
}
if (isStoreDB && p.PropertyType == typeof(DateTime) && Convert.ToDateTime(row[p.Name]) < Convert.ToDateTime("1753-01-02"))
{
continue;
}
try
{
var obj = Convert.ChangeType(row[p.Name], p.PropertyType);
p.SetValue(entity, obj, null);
}
catch (Exception)
{
}
}
return entity;
}
//多行datatable数据转换为对象::
public static List<T> TableToList<T>(DataTable dt)
{
List<T> listT = new List<T>();
Type type = typeof(T);
if (dt == null)
{
return listT;
}
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
T entity = Activator.CreateInstance<T>();
DataRow row = dt.Rows[i];
PropertyInfo[] pArray = type.GetProperties();
foreach (PropertyInfo p in pArray)
{
if (!dt.Columns.Contains(p.Name) || row[p.Name] == null || row[p.Name] == DBNull.Value)
{
continue;
}
if (p.PropertyType == typeof(DateTime) && Convert.ToDateTime(row[p.Name]) < Convert.ToDateTime("1753-01-02"))
{
continue;
}
try
{
var obj = Convert.ChangeType(row[p.Name], p.PropertyType);
p.SetValue(entity, obj, null);
}
catch (Exception)
{
// throw;
}
}
listT.Add(entity);
}
}
return listT;
}
}
c#:datatable转换为对象
最新推荐文章于 2023-11-29 20:44:30 发布