C#工具类之字典扩展类
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace G2.Utils
- {
- /// <summary>
- /// 字典帮助类
- /// </summary>
- public static class DictionaryHelper
- {
- /// <summary>
- /// 字典排序(默认排序)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">无序字典</param>
- /// <returns>有序字典</returns>
- public static IDictionary<TKey, TValue> Sort<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
- {
- if (dictionary == null)
- {
- throw new ArgumentNullException("字典为空,不能排序");
- }
- return new SortedDictionary<TKey, TValue>(dictionary);
- }
- /// <summary>
- /// 字典排序(自定义排序)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">无序字典</param>
- /// <param name="comparer">自定义排序方法</param>
- /// <returns>有序字典</returns>
- public static IDictionary<TKey, TValue> Sort<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, IComparer<TKey> comparer)
- {
- if (dictionary == null)
- {
- throw new ArgumentNullException("字典为空,不能排序");
- }
- if (comparer == null)
- {
- throw new ArgumentNullException("自定义排序方法为空,不能排序");
- }
- return new SortedDictionary<TKey, TValue>(dictionary, comparer);
- }
- /// <summary>
- /// 字典排序(依据值默认排序)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">无序字典</param>
- /// <returns>有序字典</returns>
- public static IDictionary<TKey, TValue> SortByValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
- {
- return dictionary.OrderBy(v => v.Value).ToDictionary(item => item.Key, item => item.Value);
- }
- /// <summary>
- /// 字典排序(依据值自定义排序)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">无序字典</param>
- /// <param name="comparer">自定义排序方法</param>
- /// <returns>有序字典</returns>
- public static IDictionary<TKey, TValue> SortByValue<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, IComparer<TValue> comparer)
- {
- return dictionary.OrderBy(v => v.Value, comparer).ToDictionary(item => item.Key, item => item.Value);
- }
- /// <summary>
- /// 判断字典是否为空或者无数据
- /// </summary>
- /// <param name="dictionary">字典</param>
- /// <returns>True:字典为空或没有数据;否则为False</returns>
- public static bool IsEmpty<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
- {
- if (dictionary == null)
- {
- throw new ArgumentNullException("字典为空");
- }
- return dictionary.Count == ;
- }
- /// <summary>
- /// 判断字典是否为空或者无数据
- /// </summary>
- /// <param name="dictionary">字典</param>
- /// <returns>True:字典为空或没有数据;否则为False</returns>
- public static bool IsNullOrEmpty<TKey, TValue>(this IDictionary<TKey, TValue> dictionary)
- {
- return dictionary == null || dictionary.Count == ;
- }
- /// <summary>
- /// 获取字典值(如果不包含该值则由自定义方法返回)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">字典</param>
- /// <param name="key">Key值</param>
- /// <param name="function">自定义方法</param>
- /// <returns>字典里的值或者自定义方法返回值</returns>
- public static TValue GetOrGetByFunction<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, Func<TValue> function)
- {
- if (dictionary == null)
- {
- throw new ArgumentNullException("字典为空");
- }
- if (dictionary.ContainsKey(key))
- {
- return dictionary[key];
- }
- if (function == null)
- {
- throw new ArgumentNullException("自定义取值方法为空,不能获取值");
- }
- return function();
- }
- /// <summary>
- /// 新增或重写(如果没有该Key值,则新增;否则重写该值)
- /// </summary>
- /// <typeparam name="TKey">Key类型</typeparam>
- /// <typeparam name="TValue">Value类型</typeparam>
- /// <param name="dictionary">字典</param>
- /// <param name="key">Key值</param>
- /// <param name="value">Value新值</param>
- /// <returns>字典</returns>
- public static IDictionary<TKey, TValue> AddOrSet<TKey, TValue>(this IDictionary<TKey, TValue> dictionary, TKey key, TValue value)
- {
- if (dictionary == null)
- {
- throw new ArgumentNullException("字典为空");
- }
- if (dictionary.ContainsKey(key))
- {
- dictionary[key] = value;
- }
- else
- {
- dictionary.Add(new KeyValuePair<TKey, TValue>(key, value));
- }
- return dictionary;
- }
- }
- }
C#工具类之字典扩展类的更多相关文章
- [Django REST framework - 视图组件之视图基类、视图扩展类、视图子类、视图集]
[Django REST framework - 视图组件之视图基类.视图扩展类.视图子类.视图集] 视图继承关系 详图见文章末尾 视图组件可点我查看 两个视图基类:APIView.GenericAP ...
- UI(UGUI)框架(二)-------------UIManager单例模式与开发BasePanel面板基类/UIManage统一管理UI面板的实例化/开发字典扩展类
UIManage单实例: /// 单例模式的核心 /// 1,定义一个静态的对象 在外界访问 在内部构造 /// 2,构造方法私有化 private static UIManager _instanc ...
- C#工具类之字符串扩展类
/// <summary> /// 字典串帮忙类 /// </summary> public static class StringHelper { /// <summa ...
- C#工具类之素数扩展类
/// <summary> /// 素数帮忙类 /// 本类是从.net源码 类 internal static class HashHelpers 类里抽取相应的代码 /// https ...
- C#工具类之XmlNode扩展类
using System; using System.Linq; using System.Xml; /// <summary> /// XmlNodeHelper /// </su ...
- C#工具类之日期扩展类
/// <summary> /// DateTimeHelper /// </summary> public static class DateTimeHelper { /// ...
- c#工具类之Int扩展类
public static class IntHelper { /// <summary> /// 转换为2进制字符串 /// </summary> /// <param ...
- DRF框架(五)——context传参,二次封装Response类,两个视图基类(APIView/GenericAPIView),视图扩展类(mixins),子类视图(工具视图),视图集(viewsets),工具视图集
复习 1.整体修改与局部修改 # 序列化get (给前端传递参数) #查询 ser_obj = ModelSerializer(model_obj) #只传递一个参数,默认是instance的参数,查 ...
- ios开发总结:Utils常用方法等收集,添加扩展类,工具类方法,拥有很多方便快捷功能(不断更新中。。。)
BOBUtils 工具大全 本人github开源和收集功能地址:https://github.com/niexiaobo [对ios新手或者工作一年以内开发人员很有用处] 常用方法等收集.添加扩展类. ...
随机推荐
- getParameter的用法及含义
equest.getparameter用来获取页面输入框输入的数据例如:jsp页面学员账户:<input type="text" name="username&qu ...
- cfree使用cygwin编译程序出现计算机丢失cygwin1.dll解决办法
这种情况多是环境没配好,我的是64位cygwin C:\cygwin64\bin 加入到环境变量中,重打开cfree就可以解决.
- js中的控制结构for-in语句
var arr=['赵','钱','孙','李']; for(var i=0;i<arr.length;i++){ console.log(arr[i]); } var obj={ name:' ...
- solr笔记--solr3.2以后支持document和json两种对象来更新索引
1.json形式(比如把mongodb数据库的导出结果json) <requestHandler name="/update" class="solr.JsonUp ...
- LINUX中错误 SELinux is disabled
解决: setenforce: SELinux is disabled 那么说明selinux已经被彻底的关闭了 如果需要重新开启selinux,请按下面步骤: vi /etc/selinux/con ...
- JS中的!= 、== 、!==、===的用法和区别
与c++中每一种类型都有明确的的定义不同:因JS中var定义存在,未具体区分类型,!=与==不能包含所有的条件,故加入!==与===用法: var num = 1; var str = '1'; va ...
- Blender 软件 四视图布局的创建方法
Blender 软件 四视图布局的创建方法 我使用的Blender版本:Blender V 2.77 Q: 为什么要创建一个:四视图布局场景? A: 原因1:四视图布局最适合模型建模.原因2:在 Bl ...
- kaggle House_Price_XGBoost
kaggle House_Price_final 代码 import numpy as np import pandas as pd from sklearn.ensemble import Rand ...
- thrift使用小记
Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数 ...
- [译]Javascript数列的push和pop方法
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...