/// <summary>
/// DictionaryHelper
/// </summary>
public static class DictionaryHelper
{
/// <summary>
/// Put 扩展字典方法 存在时更改,不存在时添加
/// </summary>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="dictionary">Put之前字典</param>
/// <param name="key">Key</param>
/// <param name="value">Value</param>
/// <returns>Put之后字典</returns>
public static Dictionary<TKey, TValue> Put<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key, TValue value)
{
if (dictionary.ContainsKey(key))
{
dictionary[key] = value;
}
else
{
dictionary.Add(key, value);
} return dictionary;
} /// <summary>
/// Put 扩展字典方法 存在时更改,不存在时添加
/// </summary>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="targetDictionary">Put之前字典</param>
/// <param name="sourceDictionary">Key-Value</param>
/// <returns>Put之后字典</returns>
public static Dictionary<TKey, TValue> PutArray<TKey, TValue>(this Dictionary<TKey, TValue> targetDictionary, Dictionary<TKey, TValue> sourceDictionary)
{
foreach (var keyValuePair in sourceDictionary)
{
targetDictionary.Put(keyValuePair.Key, keyValuePair.Value);
} return targetDictionary;
} /// <summary>
/// Put 扩展字典方法 存在时更改,不存在时添加
/// </summary>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="dictionary">Put之前字典</param>
/// <param name="keyValuePair">Key-Value</param>
/// <returns>Put之后字典</returns>
public static Dictionary<TKey, TValue> Put<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, KeyValuePair<TKey, TValue> keyValuePair)
{
return dictionary.Put(keyValuePair.Key, keyValuePair.Value);
} /// <summary>
/// Put 扩展字典方法 存在时更改,不存在时添加
/// </summary>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="dictionary">字典</param>
/// <param name="key">Key</param>
/// <returns>Value</returns>
public static TValue GetObjectWithoutException<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key) where TValue : class
{
if (dictionary.ContainsKey(key))
{
return dictionary[key];
} return null;
} /// <summary>
/// Put 扩展字典方法 存在时更改,不存在时添加
/// </summary>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="dictionary">字典</param>
/// <param name="key">Key</param>
/// <returns>Value</returns>
public static TValue GetStructWithoutException<TKey, TValue>(this Dictionary<TKey, TValue> dictionary, TKey key) where TValue : struct
{
if (dictionary.ContainsKey(key))
{
return dictionary[key];
} return default(TValue);
} /// <summary>
/// 列表转换成字典(重复数据自动忽略)
/// </summary>
/// <typeparam name="TModel">Model的类型</typeparam>
/// <typeparam name="TKey">Key的类型</typeparam>
/// <typeparam name="TValue">Value的类型</typeparam>
/// <param name="list">列表</param>
/// <param name="keySelector">用于从每个元素中提取键的函数</param>
/// <param name="elementSelector">用于从每个元素产生结果元素值的转换函数</param>
/// <returns>Value</returns>
public static Dictionary<TKey, TValue> ToDictionaryWithoutException<TModel, TKey, TValue>(this IEnumerable<TModel> list, Func<TModel, TKey> keySelector, Func<TModel, TValue> elementSelector)
{
var dict = new Dictionary<TKey, TValue>();
if (list != null)
{
foreach (var model in list)
{
var key = keySelector(model);
var value = elementSelector(model);
dict.Put(key, value);
}
} return dict;
}
}

DictionaryHelper2的更多相关文章

随机推荐

  1. 在CentOS7.5里安装FTP服务器

    安装了一台CentOS7.5,字符界面,为方便上传文件到这台机器上,拟采用FTP服务上传和下载文件,在CentOS上搭建vsftpd服务环境. 记录我的安装过程,供有需要的人参考. 一.系统环境 1. ...

  2. asp.net web 自定义控件

    0.调用代码 protected override void Page_Load(object sender, EventArgs e) { //给基类服务接口复制,可不付 if (IsPostBac ...

  3. Open Message Queue 集群问题

    nohup ./imqbrokerd -tty -name myBroker -port 7677 -javahome /opt/omae/jdk1.7.0_45 -cluster 192.168.2 ...

  4. [GO]new函数的使用

    new函数的作用其实就是动态分配一个空间,我们只需要进行使用,不需要考虑它的内存释放的它的生命周期 package main import "fmt" func main() { ...

  5. Java 正则表达式的实际应用

    正则表达式最详细-----> | |目录 1匹配验证-验证Email是否正确 2在字符串中查询字符或者字符串 3常用正则表达式 4正则表达式语法 1匹配验证-验证Email是否正确 public ...

  6. .net 基元类型,引用类型和值类型

    基元类型(primitive type): 编译器直接支持的数据类型称为基元类型(primitive type). string 与 String: 由于C#中的string (一个关键字)直接映射到 ...

  7. CentOS 用户/组与权限

    useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户a ...

  8. WPF中XAML的触发器的属性,事件 都有那些?以及如何寻找

    在编写XAML的触发器时,会有属性,事件. 那么这些都是哪里来的呢? 属性,是附加属性或者依赖属性 事件,那就是事件. 如何寻找呢? 很简单,在想要使用的触发器的对象上(也就是有光标的时候)按下F12 ...

  9. 《C#多线程编程实战》2.3 Mutex

    这个真的是大坑. 如果深入研究,像是同步域,上下文这类都会出现. 但是书上有没有讲. 完全不知道什么意思. 勉勉强强讲这个Mutex的用法搞明白了. 这个是原书代码: class Program { ...

  10. 【guava】字符串操作

    一,Strings类 public void testStrings(){ Strings.isNullOrEmpty("");//返回true Strings.nullToEmp ...