• C# 会可能需要的扩展


     1. List 转成DataSet

            /// <summary>
            /// 集合数据转成 DataSet
            /// </summary>
            /// <typeparam name="TSource"></typeparam>
            /// <param name="list"></param>
            /// <returns></returns>
            public static DataSet ToDataSet<TSource>(this IList<TSource> list)
            {
                Type elementType = typeof(TSource);
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                ds.Tables.Add(dt);
    
                foreach (var pi in elementType.GetProperties())
                {
                    Type colType = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
                    dt.Columns.Add(pi.Name, colType);
                }
    
                foreach (TSource item in list)
                {
                    DataRow row = dt.NewRow();
                    foreach (var pi in elementType.GetProperties())
                    {
                        row[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
                    }
                    dt.Rows.Add(row);
                }
    
                return ds;
            }
    
            public static DataSet ToDataSet<TSource>(this ICollection<TSource> list)
            {
                Type elementType = typeof(TSource);
                DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                ds.Tables.Add(dt);
    
                foreach (var pi in elementType.GetProperties())
                {
                    Type colType = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
                    dt.Columns.Add(pi.Name, colType);
                }
    
                foreach (TSource item in list)
                {
                    DataRow row = dt.NewRow();
                    foreach (var pi in elementType.GetProperties())
                    {
                        row[pi.Name] = pi.GetValue(item, null) ?? DBNull.Value;
                    }
                    dt.Rows.Add(row);
                }
    
                return ds;
            }

     2. 枚举扩展函数

            /// <summary>
            /// 枚举扩展函数
            /// <para>把枚举转换成对应的byte 类型,再转换成String</para>
            /// </summary>
            /// <param name="en"></param>
            /// <returns></returns>
            public static string ToByteString(this Enum en)
            {
                return ((byte)(dynamic)en).ToString();
            }

     3. Md5加密函数    

            /// <summary>
            ///     Md5加密函数
            /// </summary>
            /// <param name="strPwd"></param>
            /// <returns></returns>
            public static string Encrypt(string strPwd)
            {
                var md5Hasher = MD5.Create();
    
                var data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(strPwd)); //将字符编码为一个字节序列 
    
                var sBuilder = new StringBuilder(); //计算data字节数组的哈希值
    
                foreach (var @byte in data)
                {
                    sBuilder.Append(@byte.ToString("x2"));
                }
    
                return sBuilder.ToString();
            }
         

    4.MVC 扩展

                    /// <summary>
            ///  MVC 扩展
            /// </summary>
            /// <param name="parer">The parer.</param>
            /// <param name="subjectType">Type of the subject.</param>
            /// <returns></returns>
            public static MvcHtmlString MvcHtmlStringExpand(string parer, byte subjectType)
            {
                var html = "<h3>这是一个扩展方法</h3>";
    
            
                return MvcHtmlString.Create(html);
            }

    5.字符串转换成byte

            /// <summary>
            /// 字符串转换成byte
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public static byte ToByte(this string val)
            {
                if (string.IsNullOrEmpty(val))
                {
                    return 0;
                }
                var intVal = int.Parse(val);
    
                return (byte)intVal;
            }

     6.字符串转换成int16

            /// <summary>
            /// 字符串转换成int16
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public static short ToInt16(this string val)
            {
                if (string.IsNullOrEmpty(val))
                {
                    return 0;
                }
                var intVal = int.Parse(val);
    
                return (short)intVal;
            }

    7.字符串是否为空

            /// <summary>
            /// 字符串是否为空
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public static bool IsNull(this string val)
            {
                return string.IsNullOrEmpty(val);
            }

    8.字符串是不为空,有值状态

            /// <summary>
            /// 字符串是不为空,有值状态
            /// </summary>
            /// <param name="val"></param>
            /// <returns></returns>
            public static bool IsNotNull(this string val)
            {
                return !string.IsNullOrEmpty(val);
            }
  • 相关阅读:
    socket编程技巧(2)发送缓冲区和接收缓冲区的设置时机
    socket编程技巧(1)tcp接收接口(变长数据定长数据)的编写实例
    libnet介绍与分析
    TCP的6大标示符号
    数据帧中常见协议类型
    C语言中offsetof宏的应用
    ip欺骗(原始套接字系列九)
    ARP欺骗(原始套接字系列八)
    包分析(原始套接字七)
    了解Javascript中函数作为对象的魅力
  • 原文地址:https://www.cnblogs.com/Hangle/p/6215766.html
Copyright © 2020-2023  润新知