首页 / C#开发 / 正文

C#/.NET应用程序编程开发中如何根据一个字典的值获取字典的键名?

2915 1 发布于: 2019-06-18 读完约需3分钟

问题描述

在C#/.NET应用程序编程开发中,如何根据一个字典的值获取字典的键名?比如有如下字典:

Dictionary<string, string> types = new Dictionary<string, string>()
{
  {"1", "one"},
  {"2", "two"},
  {"3", "three"}
};

现需要根据字典的值(如:one),获取对应的键名1,使用C#应该如何实现?

方案一

在C#的字典中,键名是惟一的,但字典的值可以重复,所以在只获取一个键的情况下,可以使用Linq返回第一个和传入值匹配的键名,如:

var myKey = types.FirstOrDefault(x => x.Value == "one").Key;

方案二

如果不使用Linq,则需要循环迭代字典中的每一个值,直到查找到匹配的为止,如下:

public static string KeyByValue(Dictionary<string, string> dict, string val)
{
    string key = null;
    foreach (KeyValuePair<string, string> pair in dict)
    {
        if (pair.Value == val)
        { 
            key = pair.Key; 
            break; 
        }
    }
    return key;
}

调用示例:

public static void Main()
{
    Dictionary<string, string> dict = new Dictionary<string, string>()
    {
        {"1", "one"},
        {"2", "two"},
        {"3", "three"}
    };

    string key = KeyByValue(dict, "two");       
    Console.WriteLine("Key: " + key);
}

温馨提示:本文标注有(完整示例)的示例代码可以直接在try.dot.net运行。

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: C#/.NET应用程序编程开发中一个方法如何返回多个返回值?

下一篇: C#/.NET应用程序编程开发中如何使用反射(reflection)调用类的私有方法?

本文永久链接码友网 » C#/.NET应用程序编程开发中如何根据一个字典的值获取字典的键名?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册