在List中查找KeyValuePair

时间:2016-05-20 09:26:47

标签: c# list

假设我有

 List<KeyValuePair<int, string>> d

我知道字符串,但我想找到它的整数。 如何在此列表中找到keyvaluepair?

4 个答案:

答案 0 :(得分:9)

你写的是:

var result = d.Where(kvp => kvp.Value == "something");

result将包含值为KeyValuePair的所有"something"

答案 1 :(得分:2)

如果该项目是唯一的,您可以使用LINQ SingleSingleOrDefault

KeyValuePair<int, string> v = d.SingleOrDefault(x => x.Value == "mystring");
int key = v.Key;

如果该项目不是唯一的,那么您可以使用LINQ Where

var v = d.Where(x => x.Value == "mystring"); //the results would be IEnumerable

如果该项目不是唯一的,但您希望获得非唯一项目中的第一项,请使用FirstFirstOrDefault

var v = d.FirstOrDefault(x => x.Value == "mystring");
int key = v.Key;

答案 2 :(得分:1)

许多可能的解决方案之一:

   List<KeyValuePair<int, string>> list = new List<KeyValuePair<int, string>>()
                {
                    new KeyValuePair<int, string>(1, "a"),
                    new KeyValuePair<int, string>(2, "b")
                };

    var pair = list.FirstOrDefault(x => x.Value == "b");
    // or you can also use list.Find(x => x.Value == "b");

    Console.WriteLine(pair.Value);
    Console.WriteLine(pair.Key);

答案 3 :(得分:0)

使用此:

d.FirstOrDefault(x=>x.Value == "yoursearchvalue").Key;