翼度科技»论坛 编程开发 .net 查看内容

.NET 一些常用的类型转换扩展

9

主题

9

帖子

27

积分

新手上路

Rank: 1

积分
27
记录下在开发中经常用到的类型转换
  1.     /// <summary>
  2.     /// 转换扩展类
  3.     /// </summary>
  4.     public static partial class Extensions
  5.     {
  6.         #region 转换为long
  7.         /// <summary>
  8.         /// 将object转换为long,若转换失败,则返回0。不抛出异常。  
  9.         /// </summary>
  10.         /// <param name="obj"></param>
  11.         /// <returns></returns>
  12.         public static long ParseToLong(this object obj)
  13.         {
  14.             try
  15.             {
  16.                 return long.Parse(obj.ToString() ?? string.Empty);
  17.             }
  18.             catch
  19.             {
  20.                 return 0L;
  21.             }
  22.         }
  23.         /// <summary>
  24.         /// 将object转换为long,若转换失败,则返回指定值。不抛出异常。  
  25.         /// </summary>
  26.         /// <param name="str"></param>
  27.         /// <param name="defaultValue"></param>
  28.         /// <returns></returns>
  29.         public static long ParseToLong(this string str, long defaultValue)
  30.         {
  31.             try
  32.             {
  33.                 return long.Parse(str);
  34.             }
  35.             catch
  36.             {
  37.                 return defaultValue;
  38.             }
  39.         }
  40.         #endregion
  41.         #region 转换为int
  42.         /// <summary>
  43.         /// 将object转换为int,若转换失败,则返回0。不抛出异常。  
  44.         /// </summary>
  45.         /// <param name="str"></param>
  46.         /// <returns></returns>
  47.         public static int ParseToInt(this object str)
  48.         {
  49.             try
  50.             {
  51.                 return Convert.ToInt32(str);
  52.             }
  53.             catch
  54.             {
  55.                 return 0;
  56.             }
  57.         }
  58.         /// <summary>
  59.         /// 将object转换为int,若转换失败,则返回指定值。不抛出异常。
  60.         /// null返回默认值
  61.         /// </summary>
  62.         /// <param name="str"></param>
  63.         /// <param name="defaultValue"></param>
  64.         /// <returns></returns>
  65.         public static int ParseToInt(this object str, int defaultValue)
  66.         {
  67.             if (str == null)
  68.             {
  69.                 return defaultValue;
  70.             }
  71.             try
  72.             {
  73.                 return Convert.ToInt32(str);
  74.             }
  75.             catch
  76.             {
  77.                 return defaultValue;
  78.             }
  79.         }
  80.         #endregion
  81.         #region 转换为short
  82.         /// <summary>
  83.         /// 将object转换为short,若转换失败,则返回0。不抛出异常。  
  84.         /// </summary>
  85.         /// <param name="obj"></param>
  86.         /// <returns></returns>
  87.         public static short ParseToShort(this object obj)
  88.         {
  89.             try
  90.             {
  91.                 return short.Parse(obj.ToString() ?? string.Empty);
  92.             }
  93.             catch
  94.             {
  95.                 return 0;
  96.             }
  97.         }
  98.         /// <summary>
  99.         /// 将object转换为short,若转换失败,则返回指定值。不抛出异常。  
  100.         /// </summary>
  101.         /// <param name="str"></param>
  102.         /// <param name="defaultValue"></param>
  103.         /// <returns></returns>
  104.         public static short ParseToShort(this object str, short defaultValue)
  105.         {
  106.             try
  107.             {
  108.                 return short.Parse(str.ToString() ?? string.Empty);
  109.             }
  110.             catch
  111.             {
  112.                 return defaultValue;
  113.             }
  114.         }
  115.         #endregion
  116.         #region 转换为demical
  117.         /// <summary>
  118.         /// 将object转换为demical,若转换失败,则返回指定值。不抛出异常。  
  119.         /// </summary>
  120.         /// <param name="str"></param>
  121.         /// <param name="defaultValue"></param>
  122.         /// <returns></returns>
  123.         public static decimal ParseToDecimal(this object str, decimal defaultValue)
  124.         {
  125.             try
  126.             {
  127.                 return decimal.Parse(str.ToString() ?? string.Empty);
  128.             }
  129.             catch
  130.             {
  131.                 return defaultValue;
  132.             }
  133.         }
  134.         /// <summary>
  135.         /// 将object转换为demical,若转换失败,则返回0。不抛出异常。  
  136.         /// </summary>
  137.         /// <param name="str"></param>
  138.         /// <returns></returns>
  139.         public static decimal ParseToDecimal(this object str)
  140.         {
  141.             try
  142.             {
  143.                 return decimal.Parse(str.ToString() ?? string.Empty);
  144.             }
  145.             catch
  146.             {
  147.                 return 0;
  148.             }
  149.         }
  150.         #endregion
  151.         #region 转化为bool
  152.         /// <summary>
  153.         /// 将object转换为bool,若转换失败,则返回false。不抛出异常。  
  154.         /// </summary>
  155.         /// <param name="str"></param>
  156.         /// <returns></returns>
  157.         public static bool ParseToBool(this object str)
  158.         {
  159.             try
  160.             {
  161.                 return bool.Parse(str.ToString() ?? string.Empty);
  162.             }
  163.             catch
  164.             {
  165.                 return false;
  166.             }
  167.         }
  168.         /// <summary>
  169.         /// 将object转换为bool,若转换失败,则返回指定值。不抛出异常。  
  170.         /// </summary>
  171.         /// <param name="str"></param>
  172.         /// <param name="result"></param>
  173.         /// <returns></returns>
  174.         public static bool ParseToBool(this object str, bool result)
  175.         {
  176.             try
  177.             {
  178.                 return bool.Parse(str.ToString() ?? string.Empty);
  179.             }
  180.             catch
  181.             {
  182.                 return result;
  183.             }
  184.         }
  185.         #endregion
  186.         #region 转换为float
  187.         /// <summary>
  188.         /// 将object转换为float,若转换失败,则返回0。不抛出异常。  
  189.         /// </summary>
  190.         /// <param name="str"></param>
  191.         /// <returns></returns>
  192.         public static float ParseToFloat(this object str)
  193.         {
  194.             try
  195.             {
  196.                 return float.Parse(str.ToString() ?? string.Empty);
  197.             }
  198.             catch
  199.             {
  200.                 return 0;
  201.             }
  202.         }
  203.         /// <summary>
  204.         /// 将object转换为float,若转换失败,则返回指定值。不抛出异常。  
  205.         /// </summary>
  206.         /// <param name="str"></param>
  207.         /// <param name="result"></param>
  208.         /// <returns></returns>
  209.         public static float ParseToFloat(this object str, float result)
  210.         {
  211.             try
  212.             {
  213.                 return float.Parse(str.ToString() ?? string.Empty);
  214.             }
  215.             catch
  216.             {
  217.                 return result;
  218.             }
  219.         }
  220.         #endregion
  221.         #region 转换为Guid
  222.         /// <summary>
  223.         /// 将string转换为Guid,若转换失败,则返回Guid.Empty。不抛出异常。  
  224.         /// </summary>
  225.         /// <param name="str"></param>
  226.         /// <returns></returns>
  227.         public static Guid ParseToGuid(this string str)
  228.         {
  229.             try
  230.             {
  231.                 return new Guid(str);
  232.             }
  233.             catch
  234.             {
  235.                 return Guid.Empty;
  236.             }
  237.         }
  238.         #endregion
  239.         #region 转换为string
  240.         /// <summary>
  241.         /// 将object转换为string,若转换失败,则返回""。不抛出异常。  
  242.         /// </summary>
  243.         /// <param name="obj"></param>
  244.         /// <returns></returns>
  245.         public static string ParseToString(this object obj)
  246.         {
  247.             try
  248.             {
  249.                 return obj == null ? string.Empty : obj.ToString();
  250.             }
  251.             catch
  252.             {
  253.                 return string.Empty;
  254.             }
  255.         }
  256.         /// <summary>
  257.         ///
  258.         /// </summary>
  259.         /// <typeparam name="T"></typeparam>
  260.         /// <param name="obj"></param>
  261.         /// <returns></returns>
  262.         public static string ParseToStrings<T>(this object obj)
  263.         {
  264.             try
  265.             {
  266.                 if (obj is IEnumerable<T> list)
  267.                 {
  268.                     return string.Join(",", list);
  269.                 }
  270.                 return obj.ToString();
  271.             }
  272.             catch
  273.             {
  274.                 return string.Empty;
  275.             }
  276.         }
  277.         #endregion
  278.         #region 转换为double
  279.         /// <summary>
  280.         /// 将object转换为double,若转换失败,则返回0。不抛出异常。  
  281.         /// </summary>
  282.         /// <param name="obj"></param>
  283.         /// <returns></returns>
  284.         public static double ParseToDouble(this object obj)
  285.         {
  286.             try
  287.             {
  288.                 return double.Parse(obj.ToString() ?? string.Empty);
  289.             }
  290.             catch
  291.             {
  292.                 return 0;
  293.             }
  294.         }
  295.         /// <summary>
  296.         /// 将object转换为double,若转换失败,则返回指定值。不抛出异常。  
  297.         /// </summary>
  298.         /// <param name="str"></param>
  299.         /// <param name="defaultValue"></param>
  300.         /// <returns></returns>
  301.         public static double ParseToDouble(this object str, double defaultValue)
  302.         {
  303.             try
  304.             {
  305.                 return double.Parse(str.ToString() ?? string.Empty);
  306.             }
  307.             catch
  308.             {
  309.                 return defaultValue;
  310.             }
  311.         }
  312.         #endregion
  313.         #region 强制转换类型
  314.         /// <summary>
  315.         /// 强制转换类型
  316.         /// </summary>
  317.         /// <typeparam name="TResult"></typeparam>
  318.         /// <param name="source"></param>
  319.         /// <returns></returns>
  320.         public static IEnumerable<TResult> CastSuper<TResult>(this IEnumerable source)
  321.         {
  322.             return from object item in source select (TResult)Convert.ChangeType(item, typeof(TResult));
  323.         }
  324.         #endregion
  325.         #region 转换为ToUnixTime
  326.         public static long ParseToUnixTime(this DateTime nowTime)
  327.         {
  328.             var startTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
  329.             return (long)Math.Round((nowTime - startTime).TotalMilliseconds, MidpointRounding.AwayFromZero);
  330.         }
  331.         #endregion
  332.         #region List转DataTable
  333.         /// <summary>
  334.         /// List转DataTable
  335.         /// </summary>
  336.         /// <typeparam name="T"></typeparam>
  337.         /// <param name="list"></param>
  338.         /// <returns></returns>
  339.         public static DataTable ListToDataTable<T>(IEnumerable<T> list)
  340.         {
  341.             //创建属性的集合
  342.             List<PropertyInfo> pList = new List<PropertyInfo>();
  343.             //获得反射的入口
  344.             Type type = typeof(T);
  345.             DataTable dt = new DataTable();
  346.             //把所有的public属性加入到集合 并添加DataTable的列
  347.             Array.ForEach<PropertyInfo>(type.GetProperties(), p =>
  348.             {
  349.                 pList.Add(p);
  350.                 var theType = p.PropertyType;
  351.                 //处理可空类型
  352.                 if (theType.IsGenericType && theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
  353.                 {
  354.                     dt.Columns.Add(p.Name, Nullable.GetUnderlyingType(theType));
  355.                 }
  356.                 else
  357.                 {
  358.                     dt.Columns.Add(p.Name, theType);
  359.                 }
  360.             });
  361.             foreach (var item in list)
  362.             {
  363.                 //创建一个DataRow实例
  364.                 DataRow row = dt.NewRow();
  365.                 //给row 赋值
  366.                 pList.ForEach(p =>
  367.                 {
  368.                     var v = p.GetValue(item, null);
  369.                     row[p.Name] = v == null ? DBNull.Value : v;
  370.                 });
  371.                 //加入到DataTable
  372.                 dt.Rows.Add(row);
  373.             }
  374.             return dt;
  375.         }
  376.         /// <summary>
  377.         /// List转DataTable
  378.         /// </summary>
  379.         /// <param name="list"></param>
  380.         /// <returns></returns>
  381.         public static DataTable ListToDataTableNew(List<dynamic> list)
  382.         {
  383.             Dictionary<string, string> dic = new Dictionary<string, string>();
  384.             DataTable dt = new DataTable();
  385.             if (list != null && list.Count > 0)
  386.             {
  387.                 foreach (var item in list[0])
  388.                 {
  389.                     string text = item.ToString();
  390.                     string key = text.Substring(1, text.IndexOf(',') - 1);
  391.                     string value = text.Substring(text.IndexOf(',') + 1, text.Length - text.IndexOf(',') - 2);
  392.                     dt.Columns.Add(key);
  393.                 }
  394.             }
  395.             foreach (var vlist in list)
  396.             {
  397.                 DataRow row = dt.NewRow();
  398.                 foreach (var item in vlist)
  399.                 {
  400.                     string text = item.ToString();
  401.                     string key = text.Substring(1, text.IndexOf(',') - 1);
  402.                     string value = text.Substring(text.IndexOf(',') + 1, text.Length - text.IndexOf(',') - 2);
  403.                     //创建一个DataRow实例
  404.                     row[key] = value;
  405.                 }
  406.                 //加入到DataTable
  407.                 dt.Rows.Add(row);
  408.             }
  409.             return dt;
  410.         }
  411.         #endregion
  412.         #region 处理Excel单元格特殊字符
  413.         /// <summary>
  414.         /// 处理Excel单元格特殊字符
  415.         /// </summary>
  416.         /// <param name="str"></param>
  417.         /// <returns></returns>
  418.         public static string ExcelCellHandle(string str)
  419.         {
  420.             return ToSBC(str.Replace("\n", string.Empty).Replace("_", string.Empty).Replace(" ", string.Empty).Replace("'", string.Empty));
  421.         }
  422.         /// <summary>
  423.         /// 转化为半角字符串(扩展方法)
  424.         /// </summary>
  425.         /// <param name="input">要转化的字符串</param>
  426.         /// <returns>半角字符串</returns>
  427.         public static string ToSBC(string input)//single byte charactor
  428.         {
  429.             char[] c = input.ToCharArray();
  430.             for (int i = 0; i < c.Length; i++)
  431.             {
  432.                 if (c[i] == 12288)//全角空格为12288,半角空格为32
  433.                 {
  434.                     c[i] = (char)32;
  435.                     continue;
  436.                 }
  437.                 if (c[i] > 65280 && c[i] < 65375)//其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  438.                     c[i] = (char)(c[i] - 65248);
  439.             }
  440.             return new string(c);
  441.         }
  442.         #endregion
  443.         #region 删除最后一个字符之后的字符
  444.         /// <summary>
  445.         /// 删除最后结尾的一个逗号
  446.         /// </summary>
  447.         public static string DelLastComma(string str)
  448.         {
  449.             return str.Substring(0, str.LastIndexOf(","));
  450.         }
  451.         /// <summary>
  452.         /// 删除最后结尾的指定字符后的字符
  453.         /// </summary>
  454.         public static string DelLastChar(string str, string strchar)
  455.         {
  456.             return str.Substring(0, str.LastIndexOf(strchar));
  457.         }
  458.         /// <summary>
  459.         /// 删除最后结尾的长度
  460.         /// </summary>
  461.         /// <param name="str"></param>
  462.         /// <param name="Length"></param>
  463.         /// <returns></returns>
  464.         public static string DelLastLength(string str, int Length)
  465.         {
  466.             if (string.IsNullOrEmpty(str))
  467.                 return "";
  468.             str = str.Substring(0, str.Length - Length);
  469.             return str;
  470.         }
  471.         #endregion
  472.     }
复制代码
 

来源:https://www.cnblogs.com/caojiming/archive/2023/10/16/17767080.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具