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

这篇具有很好参考价值的文章主要介绍了.NET 一些常用的类型转换扩展。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录下在开发中经常用到的类型转换

        #region 转换为string
        /// <summary>
        /// 将object转换为string,若转换失败,则返回""。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string ParseToString(this object obj)
        {
            return Convert.ToString(obj) ?? string.Empty;
        }
        #endregion

        #region 转换为long
        /// <summary>
        /// 将object转换为long,若转换失败,则返回0。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static long ParseToLong(this object obj)
        {
            if (obj == null)
            {
                return 0;
            }
            else
            {
                bool boolean = long.TryParse(obj.ToString() ?? string.Empty, out long result);
                return result;
            }
        }

        /// <summary>
        /// 将object转换为long,若转换失败,则返回指定值。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static long ParseToLong(this object obj, long defaultValue)
        {
            if (obj == null)
            {
                return defaultValue;
            }
            else
            {
                bool boolean = long.TryParse(obj.ToString() ?? string.Empty, out long result);
                if (boolean)
                    return result;
                else
                    return defaultValue;
            }
        }

        #endregion

        #region 转换为int
        /// <summary>
        /// 将object转换为int,若转换失败,则返回0。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static int ParseToInt(this object obj)
        {
            if (obj == null)
            {
                return 0;
            }
            else
            {
                bool boolean = int.TryParse(obj.ToString() ?? string.Empty, out int result);
                return result;
            }
        }

        /// <summary>
        /// 将object转换为int,若转换失败,则返回指定值。不抛出异常。 
        /// null返回默认值
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static int ParseToInt(this object obj, int defaultValue)
        {
            if (obj == null)
            {
                return defaultValue;
            }
            else
            {
                bool boolean = int.TryParse(obj.ToString() ?? string.Empty, out int result);
                if (boolean)
                    return result;
                else
                    return defaultValue;
            }
        }

        #endregion

        #region 转换为double

        /// <summary>
        /// 将object转换为double,若转换失败,则返回0。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static double ParseToDouble(this object obj)
        {

            if (obj == null)
            {
                return 0;
            }
            else
            {
                bool boolean = double.TryParse(obj.ToString() ?? string.Empty, out double result);
                return result;
            }
        }

        /// <summary>
        /// 将object转换为double,若转换失败,则返回指定值。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static double ParseToDouble(this object obj, double defaultValue)
        {
            if (obj == null)
            {
                return defaultValue;
            }
            else
            {
                bool boolean = double.TryParse(obj.ToString() ?? string.Empty, out double result);
                if (boolean)
                    return result;
                else
                    return defaultValue;
            }
        }

        #endregion

        #region 转换为demical
        /// <summary>
        /// 将object转换为demical,若转换失败,则返回0。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static decimal ParseToDecimal(this object obj)
        {
            if (obj == null)
            {
                return 0;
            }
            else
            {
                bool boolean = decimal.TryParse(obj.ToString() ?? string.Empty, out decimal result);
                return result;
            }
        }

        /// <summary>
        /// 将object转换为demical,若转换失败,则返回指定值。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static decimal ParseToDecimal(this object obj, decimal defaultValue)
        {
            if (obj == null)
            {
                return defaultValue;
            }
            else
            {
                bool boolean = decimal.TryParse(obj.ToString() ?? string.Empty, out decimal result);
                if (boolean)
                    return result;
                else
                    return defaultValue;
            }
        }
        #endregion

        #region 转化为bool
        /// <summary>
        /// 将object转换为bool,若转换失败,则返回false。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static bool ParseToBool(this object obj)
        {
            if (obj == null)
            {
                return false;
            }
            else
            {
                bool boolean = bool.TryParse(obj.ToString() ?? string.Empty, out bool result);
                return result;
            }
        }

        /// <summary>
        /// 将object转换为bool,若转换失败,则返回指定值。不抛出异常。  
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="defaultValue"></param>
        /// <returns></returns>
        public static bool ParseToBool(this object obj, bool defaultValue)
        {
            if (obj == null)
            {
                return defaultValue;
            }
            else
            {
                bool boolean = bool.TryParse(obj.ToString() ?? string.Empty, out bool result);
                if (boolean)
                    return result;
                else
                    return defaultValue;
            }
        }

        #endregion

        #region 时间与时间戳转换
        /// <summary>
        /// 时间转换为毫秒时间戳
        /// </summary>
        /// <param name="nowTime"></param>
        /// <returns>时间戳(毫秒)</returns>
        public static long ParseToUnixTime(this DateTime nowTime)
        {
            var startTime = new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return (long)Math.Round((nowTime - startTime).TotalMilliseconds, MidpointRounding.AwayFromZero);
        }

        #endregion

        #region 删除最后一个字符之后的字符
        /// <summary>
        /// 删除最后结尾的一个逗号
        /// </summary>
        public static string DelLastComma(string str)
        {
            return str.Substring(0, str.LastIndexOf(","));
        }
        /// <summary>
        /// 删除最后结尾的指定字符后的字符
        /// </summary>
        public static string DelLastChar(string str, string strchar)
        {
            return str.Substring(0, str.LastIndexOf(strchar));
        }
        /// <summary>
        /// 删除最后结尾的长度
        /// </summary>
        /// <param name="str"></param>
        /// <param name="Length"></param>
        /// <returns></returns>
        public static string DelLastLength(string str, int Length)
        {
            if (string.IsNullOrEmpty(str))
                return "";
            str = str.Substring(0, str.Length - Length);
            return str;
        }
        #endregion

        #region 强制转换类型
        /// <summary>
        /// 强制转换类型
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="source"></param>
        /// <returns></returns>
        public static IEnumerable<TResult> CastSuper<TResult>(this IEnumerable source)
        {
            return from object item in source select (TResult)Convert.ChangeType(item, typeof(TResult));
        }

        #endregion

        #region List转DataTable
        /// <summary>
        /// List转DataTable
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="list"></param>
        /// <returns></returns>
        public static DataTable ListToDataTable<T>(IEnumerable<T> list)
        {
            //创建属性的集合 
            List<PropertyInfo> pList = new List<PropertyInfo>();
            //获得反射的入口 
            Type type = typeof(T);
            DataTable dt = new DataTable();
            //把所有的public属性加入到集合 并添加DataTable的列 
            Array.ForEach<PropertyInfo>(type.GetProperties(), p =>
            {
                pList.Add(p);
                var theType = p.PropertyType;
                //处理可空类型
                if (theType.IsGenericType && theType.GetGenericTypeDefinition().Equals(typeof(Nullable<>)))
                {
                    dt.Columns.Add(p.Name, Nullable.GetUnderlyingType(theType));
                }
                else
                {
                    dt.Columns.Add(p.Name, theType);
                }
            });
            foreach (var item in list)
            {
                //创建一个DataRow实例 
                DataRow row = dt.NewRow();
                //给row 赋值 
                pList.ForEach(p =>
                {
                    var v = p.GetValue(item, null);
                    row[p.Name] = v == null ? DBNull.Value : v;
                });
                //加入到DataTable 
                dt.Rows.Add(row);
            }
            return dt;
        }


        /// <summary>
        /// List转DataTable
        /// </summary>
        /// <param name="list"></param>
        /// <returns></returns>
        public static DataTable ListToDataTableNew(List<dynamic> list)
        {
            Dictionary<string, string> dic = new Dictionary<string, string>();
            DataTable dt = new DataTable();
            if (list != null && list.Count > 0)
            {
                foreach (var item in list[0])
                {
                    string text = item.ToString();
                    string key = text.Substring(1, text.IndexOf(',') - 1);
                    string value = text.Substring(text.IndexOf(',') + 1, text.Length - text.IndexOf(',') - 2);
                    dt.Columns.Add(key);
                }
            }
            foreach (var vlist in list)
            {
                DataRow row = dt.NewRow();
                foreach (var item in vlist)
                {
                    string text = item.ToString();
                    string key = text.Substring(1, text.IndexOf(',') - 1);
                    string value = text.Substring(text.IndexOf(',') + 1, text.Length - text.IndexOf(',') - 2);
                    //创建一个DataRow实例 
                    row[key] = value;
                }
                //加入到DataTable 
                dt.Rows.Add(row);
            }
            return dt;
        }
        #endregion

 文章来源地址https://www.toymoban.com/news/detail-711559.html

到了这里,关于.NET 一些常用的类型转换扩展的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 移动端开发常用的一些UI 组件库

    1、Vant 是一个 轻量、可靠的移动端组件库 ,于 2017 年开源。 目前 Vant 官方提供了 Vue 2 版本、Vue 3 版本和微信小程序版本,并由社区团队维护 React 版本和支付宝小程序版本。 2、VUX(读音 [v’ju:z],同 views)是基于WeUI和Vue(2.x)开发的移动端UI组件库,主要服务于微信页面。缺

    2024年02月13日
    浏览(43)
  • 深度学习中Numpy的一些注意点(多维数组;数据类型转换、数组扁平化、np.where()、np.argmax()、图像拼接、生成同shape的图片)

    a.shape=(3,2);既数组h=3,w=2 a.shape=(2,3,2);这里第一个2表示axis=0维度上的,三维数组中3,2)数组的个数,这里表示两个(3,2)数组。 这里axis=0指代哪里是很重要的知识点。深度学习中经常压缩一个维度,axis=0。 numpy.squeeze()函数。 语法:numpy.squeeze(a,axis = None);作用是将shape维度为

    2024年01月18日
    浏览(49)
  • iOS开发Swift-类型转换

    1.Int或Double转字符串 2.Double转Int(去掉小数点后面的) 3.Int转Double 4.向上转型 5.向下转型

    2024年02月09日
    浏览(50)
  • chrom扩展开发配合百度图像文字识别实现自动登录(后端.net core web api)

    好久没做浏览器插件开发了,因为公司堡垒机,每次登录都要输入账号密码和验证码。太浪费时间了,就想着做一个右键菜单形式的扩展。 实现思路也很简单,在这里做下记录,方便下次开发参考。 manifest.json 也叫清单文件。 先简单看下配置: 上述配置基本包含了插件开发

    2024年02月11日
    浏览(47)
  • 测试人员必用的10个Chrome扩展插件

    背景 :谷歌Chrome浏览器是全球所有测试人员最受欢迎和必备的浏览器之一,Chrome浏览器为我们提供了许多扩展的选择,可以让我们高效和省时地完成工作。以下为作者观点: 1. Testsigma Recorder Testsigma Recorder用于记录与网络应用程序的端到端交互,并将动作存储为纯英文句子,

    2024年02月11日
    浏览(58)
  • python实现的一些方法,可以直接拿来用的那种

    很多时候我们需要批量生成日期,方法有很多,这里分享两段代码 获取过去 N 天的日期: 输出: 生成一段时间区间内的日期: 输出: 保存数据到 CSV 是太常见的操作了 Pyecharts 作为 Echarts 的优秀 Python 实现,受到众多开发者的青睐,用 Pyecharts 作图时,使用一个舒服的背景也

    2024年02月10日
    浏览(39)
  • (十九)devops持续集成开发——jenkins的一些常用插件和工具的安装

    本节内容会着重介绍jenkins持续集成开发工具的一些常用插件安装以及全局工具的配置安装,并说明其主要作用。在开始插件和工具安装之前,我们要保证可以正常访问网络,并且使用国内的插件更新地址,便于插件的正常安装。官方的地址可能会导致安装失败。以下是一些可

    2024年04月27日
    浏览(49)
  • 关于C或C++,数组的强制类型转换,uint8_t与char的区别,uint8_t*与char*的兼容性问题以及一些指针的常见问题

    1.类型定义: uint8_t:这是一个无符号 8 位整数类型,定义在 stdint.h 或 inttypes.h 头文件中。它是标准的固定宽度整数类型之一,确保在所有平台上占用 8 位(1 字节)。 char:这是 C 语言的基本字符存储类型,用于存储单个字符。在不同的系统和编译器中,char 可以是有符号的

    2024年01月24日
    浏览(38)
  • 本仓库主要用来收集一些 Android 开发中常用的第三方 UI 库及其简单 Demo

    | 第三方库 | 介绍 | Demo | 使用说明 | | — | — | — | — | | CircleImageView | 显示圆形图片 | CircleImageViewDemo | Android UI Libs 之 CircleImageView.md | | android-gif-drawable | 显示 gif 图片 | android-gif-drawabledemo | Android UI Libs 之 android-gif-drawable.md | | AndroidSwipeLayout | 滑动布局,可以实现侧滑菜单与侧

    2024年04月15日
    浏览(51)
  • 微软发布ChatGPT 版必应 用的是 .NET 技术

    微软在今天在Redmond 线下举办媒体一场活动,发布了新版的微软必应, 在桌面上推出了测试版,移动版也即将推出。微软首席执行官纳德拉称Al-powered搜索为公司自云15年以来最大的事情。 2023年1月初,微软已经在讨论将OpenAI的技术纳入Word、PowerPoint、Outlook和其他应用程序,这

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包