如果给定一个作为 Dictionary<String, List<String>>
中的Key
的String
,我该如何检索与该Key
对应的KeyValuePair<String, List<String>>
?
如果给定一个作为 Dictionary<String, List<String>>
中的Key
的String
,我该如何检索与该Key
对应的KeyValuePair<String, List<String>>
?
使用FirstOrDefault
的其他答案存在问题,因为它会依次搜索整个字典直到找到匹配项,这样您就失去了散列查找的好处。如果您真的需要KeyValuePair
,那么最好像这样构建一个:
public class Program
{
public static void Main(string[] args)
{
var dictionary = new Dictionary<string, List<string>>
{
["key1"] = new List<string> { "1" },
["key2"] = new List<string> { "2" },
["key3"] = new List<string> { "3" },
};
var key = "key2";
var keyValuePair = new KeyValuePair<string, List<string>>(key, dictionary[key]);
Console.WriteLine(keyValuePair.Value[0]);
}
}
这是相关代码的fiddle链接:https://dotnetfiddle.net/Zg8x7s,原始代码来自David Pine的回答,特此致谢。
通常情况下,您需要与该键相关联的值,例如:
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"