/// <summary>
/// 将DataRow的值赋值到实体对象中.
/// </summary>
/// <typeparam name="T">实体对象烈性</typeparam>
/// <param name="row">DataRow对象</param>
/// <returns>赋值后的实体对象</returns>
public static T ToEntity<T>(this DataRow row) where T : class, new()
{
if (row == null) return default(T);
T result = new T();
Type type = result.GetType();
PropertyInfo[] properties = type.GetProperties();
foreach (DataColumn column in row.Table.Columns)
{
var tmpPropQuery = from item in properties
where item.Name == column.ColumnName
select item;
if (tmpPropQuery.Count() > 0)
{
PropertyInfo tmpProp = tmpPropQuery.FirstOrDefault();
if (tmpProp != null && tmpProp.CanWrite)
{
object o = row[column.ColumnName] != DBNull.Value && row[column.ColumnName] != null ?
row[column.ColumnName] : null;
object[] paras = { o };
tmpProp.ReflectedType.InvokeMember(tmpProp.Name, BindingFlags.SetProperty, null, result, paras);
}
}
}
return result;
}