如果value包含字符串,则获取字典键

时间:2016-09-13 02:25:13

标签: c# .net

我有这个词典:

    static Dictionary<int, string> Players = new Dictionary<int, string>();
    dictionary.Add(1, "Chris [GC]");
    dictionary.Add(2, "John");
    dictionary.Add(3, "Paul");
    dictionary.Add(4, "Daniel [GC]");

我想获取包含“[GC]”

的值的键

知道怎么做?

感谢。

3 个答案:

答案 0 :(得分:2)

使用LINQ:

var result = Players.Where(p => p.Value.Contains("[GC]")).Select(p => p.Key);

答案 1 :(得分:0)

使用如下查询。

   var itemsWithGC = dictionary.Where(d => d.Value.Contains("[GC]")).Select(d => d.Key).ToList();
   foreach (var i in itemsWithGC)
   {
       Console.WriteLine(i);
   }

答案 2 :(得分:0)

实际上,这是解决此问题的更高效方法,但可能需要一些重构...

每当您添加包含"[GC]"的新播放器时,您都可以填写HashSet<int>

Dictionary<int, string> Players = new Dictionary<int, string>();
HashSet<int> gcPlayers = new HashSet<int>();

dictionary.Add(1, "Chris [GC]");
gcPlayers.Add(1);

dictionary.Add(2, "John");
dictionary.Add(3, "Paul");

dictionary.Add(4, "Daniel [GC]");
gcPlayers.Add(4);

现在让所有拥有"[GC]"的密钥与使用名为gcPlayers的整个一样简单。

这将避免查询并迭代整个字典以获得所有巧合,而您将避免向gcPlayers添加重复项,因为它已设置(即< em>无序的唯一值集合)。