我将从中获得灵感 此前的问题. 我有一个字典,里面有列表,我想通过其中一个列表里面的值来获取键。
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"。
如果你想用linq,你可以写。
var result = myDict.FirstOrDefault(p => p.Value.Contains(stringTofind)).Key;
我喜欢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.");
}