zoukankan      html  css  js  c++  java
  • 通用扩展函数--类型转换

    调用:

         //转int
            var int1 = "2".TryToInt();//转换为int失败返回0
            var int2 = "2x".TryToInt();
            var int3 = "2".TryToInt(1);//转换为int失败返回1
            var int4 = "2x".TryToInt(1);
    
            //转double
            var d1 = "2".TryToMoney(); //同上
            var d2 = "2x".TryToMoney();
            var d3 = "2".TryToMoney(1);
            var d4 = "2x".TryToMoney(1);
    
            //转string
            string a = null;
            var s1 = a.TryToString();
            var s3 = a.TryToString("1");
    
            //转decimal
            var d11 = "2".TryToDecimal();
            var d22 = "2x".TryToDecimal();
            var d33 = "2".TryToDecimal(1);
            var d44 = "2x".TryToDecimal(1);
    
            //转datetime
            var de1 = "2013-1-1".TryToDate();
            var de2 = "x2013-1-1".TryToDate();
            var de3 = "x2013-1-1".TryToDate(DateTime.Now);
    
            //json和model转换
            var json = new { id = 1 }.ModelToJson();
            var model = "{id:1}".JsonToModel<Model>();
    
            //list和dataTable转换
            var dt = new List<Model>() { new Model() { id = 1 } }.ListToDataTable();
            var list = dt.DataTableToList<Model>();

    代码:(DataTable处做了修改)

        /// <summary>
        /// ** 描述:类型转换
        /// ** 创始时间:2015-6-2
        /// ** 修改时间:-
        /// ** 作者:sunkaixuan
        /// ** 使用说明:
        /// </summary>
        public static class TypeParseExtenions
        {
            #region 强转成int 如果失败返回 0
            /// <summary>
            /// 强转成int 如果失败返回 0
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static int TryToInt(this object thisValue)
            {
                int reval = 0;
                if (thisValue != null && int.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return reval;
            }
            #endregion
    
            #region 强转成int 如果失败返回 errorValue
            /// <summary>
            /// 强转成int 如果失败返回 errorValue
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static int TryToInt(this object thisValue, int errorValue)
            {
                int reval = 0;
                if (thisValue != null && int.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return errorValue;
            }
            #endregion
    
            #region 强转成double 如果失败返回 0
            /// <summary>
            /// 强转成money 如果失败返回 0
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static double TryToMoney(this object thisValue)
            {
                double reval = 0;
                if (thisValue != null && double.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return 0;
            }
            #endregion
    
            #region 强转成double 如果失败返回 errorValue
            /// <summary>
            /// 强转成double 如果失败返回 errorValue
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="errorValue"></param>
            /// <returns></returns>
            public static double TryToMoney(this object thisValue, int errorValue)
            {
                double reval = 0;
                if (thisValue != null && double.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return errorValue;
            }
            #endregion
    
            #region 强转成string 如果失败返回 ""
            /// <summary>
            /// 强转成string 如果失败返回 ""
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static string TryToString(this object thisValue)
            {
                if (thisValue != null) return thisValue.ToString().Trim();
                return "";
            }
            #endregion
    
            #region  强转成string 如果失败返回 errorValue
            /// <summary>
            /// 强转成string 如果失败返回 str
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="errorValue"></param>
            /// <returns></returns>
            public static string TryToString(this object thisValue, string errorValue)
            {
                if (thisValue != null) return thisValue.ToString().Trim();
                return errorValue;
            }
            #endregion
    
            #region 强转成Decimal 如果失败返回 0
            /// <summary>
            /// 强转成Decimal 如果失败返回 0
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static Decimal TryToDecimal(this object thisValue)
            {
                Decimal reval = 0;
                if (thisValue != null && decimal.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return 0;
            }
            #endregion
    
            #region 强转成Decimal 如果失败返回 errorValue
            /// <summary>
            /// 强转成Decimal 如果失败返回 errorValue
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="errorValue"></param>
            /// <returns></returns>
            public static Decimal TryToDecimal(this object thisValue, int errorValue)
            {
                Decimal reval = 0;
                if (thisValue != null && decimal.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return errorValue;
            }
            #endregion
    
            #region 强转成DateTime 如果失败返回 DateTime.MinValue
            /// <summary>
            /// 强转成DateTime 如果失败返回 DateTime.MinValue
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="i"></param>
            /// <returns></returns>
            public static DateTime TryToDate(this object thisValue)
            {
                DateTime reval = DateTime.MinValue;
                if (thisValue != null && DateTime.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return reval;
            }
            #endregion
    
            #region 强转成DateTime 如果失败返回 errorValue
            /// <summary>
            /// 强转成DateTime 如果失败返回 errorValue
            /// </summary>
            /// <param name="thisValue"></param>
            /// <param name="errorValue"></param>
            /// <returns></returns>
            public static DateTime TryToDate(this object thisValue, DateTime errorValue)
            {
                DateTime reval = DateTime.MinValue;
                if (thisValue != null && DateTime.TryParse(thisValue.ToString(), out reval))
                {
                    return reval;
                }
                return errorValue;
            }
            #endregion
    
            #region 将json序列化为实体
            /// <summary>
            /// 将json序列化为实体
            /// </summary>
            /// <typeparam name="TEntity"></typeparam>
            /// <param name="json"></param>
            /// <returns></returns>
            public static TEntity JsonToModel<TEntity>(this string json)
            {
                JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                return jsSerializer.Deserialize<TEntity>(json);
            }
            /// <summary>
            /// 将实体序列化为json
            /// </summary>
            /// <param name="model"></param>
            /// <returns></returns>
            public static string ModelToJson<T>(this T model)
            {
                JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
                return jsSerializer.Serialize(model);
            }
    
            #endregion
    
            #region 将集合类list转换成DataTable
            /// <summary>
            /// 将集合类list转换成DataTable
            /// </summary>
            /// <param name="list">集合</param>
            /// <returns></returns>
            public static DataTable ListToDataTable<T>(this List<T> list)
            {
                DataTable result = new DataTable();
                if (list.Count > 0)
                {
                    PropertyInfo[] propertys = typeof(T).GetProperties();
                    foreach (PropertyInfo pi in propertys)
                    {
                        result.Columns.Add(pi.Name, pi.PropertyType);
                    }
    
                    for (int i = 0; i < list.Count; i++)
                    {
                        ArrayList tempList = new ArrayList();
                        foreach (PropertyInfo pi in propertys)
                        {
                            object obj = pi.GetValue(list[i], null);
                            tempList.Add(obj);
                        }
                        object[] array = tempList.ToArray();
                        result.LoadDataRow(array, true);
                    }
                }
                return result;
            }
            #endregion
    
            #region  将DataTable转为集合类list
            /// <summary>
            /// 将datatable转为list
            /// </summary>
            /// <typeparam name="T"></typeparam>
            /// <param name="dt"></param>
            /// <returns></returns>
            public static List<T> DataTableToList<T>(this DataTable dt)
            {
                var list = new List<T>();
                Type t = typeof(T);
                var plist = new List<PropertyInfo>(typeof(T).GetProperties());
    
                foreach (DataRow item in dt.Rows)
                {
                    T s = System.Activator.CreateInstance<T>();
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        PropertyInfo info = plist.Find(p => p.Name == dt.Columns[i].ColumnName);
                        if (info != null)
                        {
                            if (!Convert.IsDBNull(item[i]))
                            {
                                info.SetValue(s, item[i], null);
                            }
                        }
                    }
                    list.Add(s);
                }
                return list;
            }
            #endregion
        }

    文章出自:http://www.cnblogs.com/sunkaixuan/p/4548028.html

  • 相关阅读:
    js判断网页是否加载完毕 包括图片
    文本框只能输入数字,输入其他自动过滤 几种方法
    pagebean pagetag java 后台代码实现分页 demo 前台标签分页 后台java分页
    nodejs微信公众号快速开发|自定义关键字回复
    Putty使用ssh方式登录服务器
    什么是Q Learning?
    使用python显示当前系统中的所有进程并关闭某一进程
    树莓派3搭建低成本NAS实现文件共享
    Fortran变量的定义和声明新写法
    Fortran中将多个文件进行编译运行的方法
  • 原文地址:https://www.cnblogs.com/cang12138/p/5774064.html
Copyright © 2011-2022 走看看