将数据库查询得到的值转换为指定的运行时对象,包括Nullable

将数据库查询得到的值转换为指定的运行时对象,包括Nullable

     public T[] ExecuteArray(GSQLCommandScript gsql, object paras = null)
        {
            using (DbDataReader reader = ExecuteReader(gsql, paras))
            {
                var colcount = reader.FieldCount;
                List l = new List(colcount);
                while (reader.Read())
                {

                    object value = reader.GetValue(0);
                    value = SqlObject2CLIObject(value);
                    var tval = SqlUtility.ConvertToTargetType(value);
                    l.Add(tval);
                }
                return l.ToArray();
            }
        }

/// 
        /// 将数据库查询出的数据转换为指定的强类型
        /// 
        /// 
        /// 
        /// 
        public static T ConvertToTargetType(object obj)
        {
            Type t = typeof(T);
            if (obj == null || obj == DBNull.Value)
            {
                return default(T);
            }

            if ((t.IsConstructedGenericType && t.
      GetGenericTypeDefinition().Equals
      (typeof(Nullable<>))))
            {
                var types = t.GenericTypeArguments;
                if (types.Length == 1)
                {
                    t = types[0];
                }
                else
                {
                    throw new Exception("无法处理带有多个类型参数的泛型。");
                }
            }
            return (T)Convert.ChangeType(obj, t);
        }

完整的源码请关注我的公众号,回复”GeneralSQL“查看
我的公众号
我的公众号
欢迎加入技术交流群:14966975

你可能感兴趣的:(将数据库查询得到的值转换为指定的运行时对象,包括Nullable)