Skip to content

Instantly share code, notes, and snippets.

@binary4cat
Created January 31, 2019 09:00

Revisions

  1. binary4cat created this gist Jan 31, 2019.
    52 changes: 52 additions & 0 deletions DictionaryExtend.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.Specialized;

    namespace iCTR.WeiXin.Common.Extensions
    {
    /// <summary>
    /// 字典类扩展
    /// </summary>
    public static class DictionaryExtend
    {
    /// <summary>
    /// 根据OrderedDictionary类型的value获取key
    /// </summary>
    /// <typeparam name="T1">key的类型</typeparam>
    /// <typeparam name="T2">value的类型</typeparam>
    /// <param name="od">OrderedDictionary对象</param>
    /// <param name="value">value</param>
    /// <returns>key的值,如果没有则返回零值</returns>
    public static T1 GetKeyByValue<T1,T2>(this OrderedDictionary od, T2 value)
    {
    foreach (DictionaryEntry o in od)
    {
    // 比较两个参数是否相等
    if (EqualityComparer<T2>.Default.Equals((T2)o.Value,value))
    {
    return (T1) o.Key;
    }
    }
    return default(T1);
    }

    /// <summary>
    /// 根据索引获取字典的一项
    /// </summary>
    /// <param name="od">有序字典</param>
    /// <param name="i">索引</param>
    /// <returns>字典项</returns>
    public static DictionaryEntry GetItemByIndex(this OrderedDictionary od, int i)
    {
    var j = 0;
    foreach (DictionaryEntry entry in od)
    {
    if (i == j++)
    {
    return entry;
    }
    }
    return new DictionaryEntry();
    }
    }
    }