#region DataTable自动转List<T>方法
/// <summary>
/// DataTable 集合根据传入的 类型。自动转换List集合
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="dt">datatable表</param>
/// <returns>集合List</returns>
internal static List<T> GetDataTableToList<T>(DataTable dt) where T : new()
{
List<T> lists = new List<T>();//定义集合
if (dt == null || dt.Rows.Count < 0) //判断ds的null和是否包含数据
{
return lists;
}
foreach (DataRow row in dt.Rows)
{
DataRow myRow = row;//获取当前行
T t = new T();
#region 反射入List
Type type = t.GetType();
foreach (var item in type.GetProperties())//遍历公共属性
{
string tempName = item.Name;
if (dt.Columns.Contains(tempName))
{
if (!item.CanWrite) continue;//该属性不可写,直接跳出
if (!item.PropertyType.IsGenericType)//对属性中有DateTime进行区分对待
{
if (item.Name == "Guid")//对属性为Guid进行特别处理
{
Guid guid = Guid.Empty;
if (!Guid.TryParse(myRow[tempName].ToString(), out guid)) { guid = Guid.NewGuid(); }
item.SetValue(t, Convert.ChangeType(guid, item.PropertyType), null);
}
else
{
item.SetValue(t, Convert.ChangeType(myRow[tempName], item.PropertyType), null);
}
}
else
{
item.SetValue(t, Convert.ChangeType(myRow[tempName], Nullable.GetUnderlyingType(item.PropertyType)), null);
}
}
}
#endregion
lists.Add(t);
}
return lists;
}
#endregion
/// <summary>
/// DataTable 集合根据传入的 类型。自动转换List集合
/// </summary>
/// <typeparam name="T">实体类</typeparam>
/// <param name="dt">datatable表</param>
/// <returns>集合List</returns>
internal static List<T> GetDataTableToList<T>(DataTable dt) where T : new()
{
List<T> lists = new List<T>();//定义集合
if (dt == null || dt.Rows.Count < 0) //判断ds的null和是否包含数据
{
return lists;
}
foreach (DataRow row in dt.Rows)
{
DataRow myRow = row;//获取当前行
T t = new T();
#region 反射入List
Type type = t.GetType();
foreach (var item in type.GetProperties())//遍历公共属性
{
string tempName = item.Name;
if (dt.Columns.Contains(tempName))
{
if (!item.CanWrite) continue;//该属性不可写,直接跳出
if (!item.PropertyType.IsGenericType)//对属性中有DateTime进行区分对待
{
if (item.Name == "Guid")//对属性为Guid进行特别处理
{
Guid guid = Guid.Empty;
if (!Guid.TryParse(myRow[tempName].ToString(), out guid)) { guid = Guid.NewGuid(); }
item.SetValue(t, Convert.ChangeType(guid, item.PropertyType), null);
}
else
{
item.SetValue(t, Convert.ChangeType(myRow[tempName], item.PropertyType), null);
}
}
else
{
item.SetValue(t, Convert.ChangeType(myRow[tempName], Nullable.GetUnderlyingType(item.PropertyType)), null);
}
}
}
#endregion
lists.Add(t);
}
return lists;
}
#endregion