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

C#开发 作者: Rector 27 次阅读 · 读完约需 1 分钟 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在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应用程序编程开发中如何根据一个字典的值获取字典的键名?

发布于: 2019-06-18 16:23:44
分享扩散:

发表评论

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