获取KeyValuePair给出密钥

时间:2016-08-24 12:46:14

标签: c# dictionary key-value

如果String中包含的KeyDictionary<String, List<String>>,我该如何检索与KeyValuePair<String, List<String>>对应的Key

3 个答案:

答案 0 :(得分:5)

使用shift(x, n = 1, type = "lag")的其他答案的问题在于它将按顺序搜索整个字典,直到找到匹配为止,并且您将失去使用散列查找的好处。如果你真的需要一个FirstOrDefault来构建一个,这似乎更明智:

KeyValuePair

(感谢David Pine在答案中提供了原始代码)。

这是一个小提琴:https://dotnetfiddle.net/Zg8x7s

答案 1 :(得分:0)

通常您需要与键关联的值,例如:

Dictionary<String, List<String>> dictionary = GetDictionary();
var value = dictionary["key"];

但您可以使用Linq获取整个KeyValuePair

var dictionary = new Dictionary<string, List<string>>
{
    ["key1"] = new List<string> { "1" },
    ["key2"] = new List<string> { "2" },
    ["key3"] = new List<string> { "3" },
};

var keyValuePair = dictionary.FirstOrDefault(kvp => kvp.Key == "key2");

Console.WriteLine(keyValuePair?.Value[0]); // Prints "2"

这是.NET Fiddle

答案 2 :(得分:0)

使用linq有多种方法,但从根本上说,如果你真的想要一个KeyValuePair,自己构建一个可以更简单:

if (dictionaryVar.ContainsKey(key)) {
    KeyValuePair<string, List<string>> kvp = new KeyValuePair<string, List<string>>(key, dictionaryVar[key]);
}