EXFCODE:
#region 将DataRow转换成指定类型
/// 将DataRow转换成指定类型
/// 实体类
public static T ConvertToEntity(DataRow pDataRow)
{
Object entity = null;
try
{
Object proValue = null;
FieldInfo fieldinfo = null;
if (pDataRow != null)
{
entity = Activator.CreateInstance();//动态创建类的实例
Type pType = entity.GetType();
foreach (DataColumn dc in pDataRow.Table.Columns)
{
//忽略绑定时的大小写
fieldinfo = pType.GetField(dc.ColumnName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.IgnoreCase);
if (fieldinfo == null) continue;
proValue = pDataRow[dc];
if (proValue != DBNull.Value) //当值不为空时
{
try
{
fieldinfo.SetValue(entity, Convert.ChangeType(proValue, dc.DataType));//给属性赋值
}
catch
{
continue;//如果有错误,继续下一个属性的赋值
}
}
}
}
}
catch
{
entity = null;
}
return (T)entity;
}
#endregion
注:该方法使用了.net的泛类型,这样可以在调用时更加方便,无需进行转换。