.net扩展方法——其他(科学计数法、ToDictionary 去重、List<Guid>转为List<Guid?>)

摘要:
.net扩展方法-其他:ChangeToDecimal:数字科学记数法处理ToDictionaryEx:ToDictionary重复数据消除ToListGuid:List到List科学符号的测试调用:stringval=“7.8E+07”//7.8*10^7科学符号的表示。例如,1.03乘以10到8次方可以缩写为“1.03E+08”,形式为varresult=val。ChangeToDecimal()//结果:78000000M扩展method:///////数字科学符号处理////////publicstaticecimalChangeToDecimal{decimalData=0.0M;如果{dData=Convert.ToDecimal;}否则{dData=Convert.To Decimal,}returnMath。圆形;}/////ToDictionary重复数据消除/////////////////公共统计IDictionaryToDictionaryEx{IDictionary<TKey,TValue>dict=newDictionary<TKkey,TValue˃();foreach{varkey=keyGetter;if{continue;}dict.Add;}returndict;}//////列表˂Guid?

.net扩展方法——其他:

  1. ChangeToDecimal:数字科学计数法处理
  2. ToDictionaryEx:ToDictionary 去重
  3. ToListGuid:List<Guid>转为List<Guid?>

科学计数法的测试调用:

            string val = "7.8E+07";//7.8*10^7(10的7次方) 科学计数法的表示。例如1.03乘10的8次方,可简写为“1.03E+08”的形式
            var result = val.ChangeToDecimal();//结果:78000000M

扩展方法:

        /// <summary>
        /// 数字科学计数法处理
        /// </summary>
        /// <param name="strData"></param>
        /// <returns></returns>
        public static decimal ChangeToDecimal(this string strData)
        {
            decimal dData = 0.0M;
            if (strData.Contains("E"))
            {
                dData = Convert.ToDecimal(decimal.Parse(strData.ToString(), System.Globalization.NumberStyles.Float));
            }
            else
            {
                dData = Convert.ToDecimal(strData);
            }
            return Math.Round(dData, 4);
        }

        /// <summary>
        /// ToDictionary 去重
        /// </summary>
        /// <typeparam name="TElement"></typeparam>
        /// <typeparam name="TKey"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        /// <param name="source"></param>
        /// <param name="keyGetter"></param>
        /// <param name="valueGetter"></param>
        /// <returns></returns>
        public static IDictionary<TKey, TValue> ToDictionaryEx<TElement, TKey, TValue>(
            this IEnumerable<TElement> source,
            Func<TElement, TKey> keyGetter,
            Func<TElement, TValue> valueGetter)
        {
            IDictionary<TKey, TValue> dict = new Dictionary<TKey, TValue>();
            foreach (var e in source)
            {
                var key = keyGetter(e);
                if (dict.ContainsKey(key))
                {
                    continue;
                }

                dict.Add(key, valueGetter(e));
            }
            return dict;
        }

        /// <summary>
        /// List<Guid?>转为List<Guid>
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        public static List<Guid> ToListGuid(this List<Guid?> val)
        {
            return val.Select(x => x ?? Guid.Empty).ToList();
        }

        /// <summary>
        /// List<Guid>转为List<Guid?>
        /// </summary>
        /// <param name="val"></param>
        /// <returns></returns>
        public static List<Guid?> ToListGuid(this List<Guid> val)
        {
            return val.Select(x => new Guid?(x)).ToList();
        }

免责声明:文章转载自《.net扩展方法——其他(科学计数法、ToDictionary 去重、List&amp;lt;Guid&amp;gt;转为List&amp;lt;Guid?&amp;gt;)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Nginx 编译参数详解/大全【STM32H7教程】第73章 STM32H7的SPI总线应用之驱动W25QXX(支持查询,中断和DMA)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sqlser生成guid与复制造数

NEWID()可以生成GUID,如果要小写,则LOWER(NEWID()) 可生成 2144400c-322c-4673-b24c-6a29db94422c 类似这样的 采用如下方法可复制造数,非常快: INSERT INTO 表名(字段名) SELECT 字段名 --可用函数替换要更改的字段 FROM 表名 条件 例子: INSERT INTO SimM...

如何修改.net framework(转载)

这段时间为跟踪一个Bug而焦头烂额,最后发现是Framework的问题,这让人多少有些绝望。所以到微软论坛提了个帖子,希望能得到些帮助。虽然论坛智能到能够判断楼主是否是MSDN订阅用户,以便尽快解决(传说MSDN订阅用户的问题能在两天内得到回复的,当时还很得意公司为我们购买的MSDN订阅账号),但得到的回复是“Could you file a bug re...

ID生成算法(二)

上一篇文章介绍了一种用雪花算法生成GUID的方法,下面介绍里外一种生成GUID并导出为.txt文件的方法: 话不多说 show you the code ! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <m...

用POI导出excel时,较长的数字不想被自动变为科学计数法的解决方式

做过很多次导出excel了。都碰到一个问题,内容里如果包含一个比较长的数字,比如订单号“2546541656596”,excel会自动变成科学计数法。。。 弄过好几次都没有解决,最近又要导出excel了,下决心一定要找到解决办法 自己在excel里测试过,较长的数字,都会自动变成科学计数法,除非我们把单元格格式设置成“文本型” 哈哈,似乎找到了思路:用po...

JS Guid生成

function numToGuid(uid) { var str = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"; var l =uid.toString(); return str.substr(0, str.length - l.length) +uid; }); 这是就简单模拟 gu...

【转】SQL Server用GUID值来完成数据表行标识

    以下的文章主要描述的是SQL Server数据表中使用GUID值来作为行标识,GUID(Global unique identifier)全局唯一标识符,GUID(Global unique identifier)是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值。          GU...