我有这个词典:
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]”
的值的键知道怎么做?
感谢。
答案 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>无序的唯一值集合)。