どうも、ちょげ(@chogetarou)です。
辞書(Dictionary)の値からキーを取得する方法を紹介します。
方法

辞書の値からキーを取得する方法は、2つあります。
FirstOrDefault()
1つは、System.LinqのFirstOrDefault()を使う方法です。
まず、System.Linqを導入します。
using System.Linq;
次に、辞書からFirstOrDefault()を呼び出し、引数にラムダ式を指定します。
ラムダ式で、「引数.Value == 値」のような条件式を返します。
そして、FirstOrDefault()からKeyプロパティの値を取得します。
T key = dict.FirstOrDefault(item => item.Value == 値).Key;
上記のFirstOrDefault().Keyは、FirstOrDefault()のラムダ式で引数と比較した値のキーを取得します。
使用例
using System;
using System.Linq;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
Dictionary<string, int> numbers = new Dictionary<string, int>()
{
{ "one", 1 },
{ "two", 2 },
{ "three", 3 },
{ "four", 4 },
{ "三", 3 },
{ "five", 5 },
{ "third", 3 },
};
string key1 = numbers.FirstOrDefault(item => item.Value == 3).Key;
string key2 = numbers.FirstOrDefault(item => item.Value == 5).Key;
string key3 = numbers.FirstOrDefault(item => item.Value == 2).Key;
Console.WriteLine(key1); //three
Console.WriteLine(key2); //five
Console.WriteLine(key3); //two
}
}
foreach
もう1つは、foreachを使う方法です。
まず、foreachで辞書をループします。
ループ処理で、「要素.Value == 値」のような条件式で分岐します。
そして、上記の条件式を満たす要素のKeyプロパティを取得します。
foreach(var item in dict)
{
if (item.Value == 値)
{
key = item.Key; //値からキーを取得
}
}
上記のforeachは、ループした辞書から条件分岐で比較した値を持つキーを取得します。
使用例
using System;
using System.Collections.Generic;
public class Example
{
public static void Main()
{
Dictionary<string, int> numbers = new Dictionary<string, int>()
{
{ "one", 1 },
{ "two", 2 },
{ "three", 3 },
{ "four", 4 },
{ "five", 5 },
};
string key = "";
foreach(var item in numbers)
{
if (item.Value == 3)
{
key = item.Key;
}
}
Console.WriteLine(key); //three
}
}
まとめ
辞書(Dictionary)の値からキーを取得する方法は、次の2つです。
- System.LinqのFirstOrDefault()を使う方法
- foreachを使う方法
コメント