通过列表值获取字典键

问题描述 投票:1回答:2

我将从中获得灵感 此前的问题. 我有一个字典,里面有列表,我想通过其中一个列表里面的值来获取键。

Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>
{
    {"1", new List<string>{"1a", "1b"} },
    {"2", new List<string>{"2a", "2b"} },
    {"3", new List<string>{"3a", "3b"} },
};

我确信里面的所有值都是唯一的。

我想要这样的东西。

getByValueKey(string value);

getByValueKey("2a")必须返回 "2"。

c# dictionary unity3d
2个回答
3
投票

如果你想用linq,你可以写。

var result = myDict.FirstOrDefault(p => p.Value.Contains(stringTofind)).Key;

2
投票

我喜欢Frenchy的答案, 但如果你想找一个非linqy的解决方案, 那么. :

Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>
{
    {"1", new List<string>{"1a", "1b"} },
    {"2", new List<string>{"2a", "2b"} },
    {"3", new List<string>{"3a", "3b"} },
};

string stringToFind = "2a";

string matchingKey = null;
foreach(KeyValuePair<string, List<string>> kvp in myDict)
{
    if (kvp.Value.Contains(stringToFind))
    {
        matchingKey = kvp.Key;
        break;
    }
}

if (matchingKey != null)
{
    System.Console.WriteLine("Matching Key: " + matchingKey);
}
else
{
    System.Console.WriteLine("No match found.");
}
© www.soinside.com 2019 - 2024. All rights reserved.