获取给定Key的KeyValuePair

本文关键字:KeyValuePair Key 获取 | 更新日期: 2023-09-27 18:03:42

给定StringDictionary<String, List<String>>中包含的Key,如何检索与该Key对应的KeyValuePair<String, List<String>> ?

获取给定Key的KeyValuePair

使用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]);
    }
}

(感谢David Pine在他的回答中提供的原始代码)。

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

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

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"