如果String
中包含的Key
为Dictionary<String, List<String>>
,我该如何检索与KeyValuePair<String, List<String>>
对应的Key
?
答案 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]);
}