• DataTable转换成实体


            ///<summary>
            ///DataRow转换成实体
            ///</summary>
            ///<paramname="DataRow">DataRow</param>
            public static T ToModel<T>(DataRow row) where T : new()
            {
                if (row == null)
                {
                    return default(T);
                }
                T t = new T();
                PropertyInfo[] objPropertiesArray = t.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
                foreach (PropertyInfo objProperty in objPropertiesArray)
                {
                    string value = string.Empty;
                    object val = null;
                    string Name = objProperty.Name;
                    int count = row.Table.Columns.Count;
                    for (int i = 0; i < count; i++)
                    {
                        if (Name.Equals(row.Table.Columns[i].ColumnName))
                        {
                            val = row[Name];
                            if (val != DBNull.Value)
                            {
                                objProperty.SetValue(t, Ct(val, objProperty.PropertyType), null);
                            }
                            break;
                        }
                    }
                }
                return t;
            }
    
            /// <summary>
            /// DataTable转换成实体列表
            /// </summary>
            /// <param name="dt">数据源</param>
            /// <returns>转换后的实体列表</returns>
            public static List<T> ToModelList<T>(DataTable dt) where T : new()
            {
                List<T> lstT = new List<T>();
                foreach (DataRow row in dt.Rows)
                {
                    lstT.Add(ToModel<T>(row));
                }
                return lstT;
            }
    
            /// <summary>
            /// 处理Convert.ChangeType无法直接转换的类型,如:int?等
            /// </summary>
            /// <param name="value">值</param>
            /// <param name="conversionType">属性类型</param>
            /// <returns>转换后的类型</returns>
            public static object Ct(object value, Type conversionType)
            {
                if (conversionType == null)
                {
                    throw new ArgumentNullException("conversionType");
                }
                if (conversionType.IsGenericType &&
                  conversionType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                {
                    if (value == null)
                    {
                        return null;
                    }
                    NullableConverter nullableConverter = new NullableConverter(conversionType);
                    conversionType = nullableConverter.UnderlyingType;
                }
                if (value is string && conversionType == typeof(Guid))
                {
                    return new Guid(value as string);
                }
                return Convert.ChangeType(value, conversionType);
            }
  • 相关阅读:
    无需数学基础如进行机器学习
    机器学习路线图
    机器学习的最佳学习路线原来只有四步
    机器学习是否需要完整扎实的数学基础?
    可无注解的 SpringBoot API文档生成工具
    JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具
    python 两个文件夹里的文件名对比
    Navicat for MySQL 激活方法
    mysql —— 利用Navicat 导出和导入数据库
    HTTP请求错误码大全(转)
  • 原文地址:https://www.cnblogs.com/coder-soldier/p/6901031.html
Copyright © 2020-2023  润新知