• 通用扩展函数之TypeParse


    代码实现:

    var int1 = "2".TryToInt();//转换为int失败返回0
    var int2 = "2x".TryToInt();
    var int3 = "2".TryToInt(1);//转换为int失败返回1
    var int4 = "2x".TryToInt(1);
     
     
    var d1 = "2".TryToMoney(); //同上
    var d2 = "2x".TryToMoney();
    var d3 = "2".TryToMoney(1);
    var d4 = "2x".TryToMoney(1);
     
    string a = null;
    var s1 = a.TryToString();
    var s3 = a.TryToString("1");
     
     
    var d11 = "2".TryToDecimal();
    var d22 = "2x".TryToDecimal();
    var d33 = "2".TryToDecimal(1);
    var d44 = "2x".TryToDecimal(1);
     
     
    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<ModelTest>();
     
     
    //list和dataTable转换
    var dt = new List<ModelTest>().ListToDataTable();
    var list = dt.DataTableToList<ModelTest>();

    封装类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Web.Script.Serialization;
    using System.Data;
    using System.Reflection;
    using System.Collections;
     
    namespace SyntacticSugar
    {
        /// <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  DataTable List
            /// <summary>
            /// 将集合类转换成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);
                            if (obj != null && obj != DBNull.Value)
                                tempList.Add(obj);
                        }
                        object[] array = tempList.ToArray();
                        result.LoadDataRow(array, true);
                    }
                }
                return result;
            }
            /// <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
     
        }
    }
  • 相关阅读:
    如何解决跨域问题?
    eclipse 显示堆内存状态
    MATLAB解一元线性回归问题
    Java深入理解深拷贝和浅拷贝区别
    Spring中使用DataSourceTransactionManager进行事务管理的xml配置
    jsp:forward
    Mybatis入门笔记链接
    python 判断字符串是否全为字母或数字
    java对象的浅克隆和深克隆
    安装使用ipython notebook
  • 原文地址:https://www.cnblogs.com/jameslif/p/6831397.html
Copyright © 2020-2023  润新知