/// 实体类/// public static T ConvertToEntity& - Powered by ExfSoft!" />

将DataRow转换成指定类型

所属分类:[Asp.Net] | 发表于:2010-1-11 21:04:46 | 人气(590)

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的泛类型,这样可以在调用时更加方便,无需进行转换。

0    0