[英]Get dictionary key if value contains string
我有這個字典:
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]”的值的鍵
任何想法如何?
謝謝。
使用LINQ:
var result = Players.Where(p => p.Value.Contains("[GC]")).Select(p => p.Key);
使用如下查詢。
var itemsWithGC = dictionary.Where(d => d.Value.Contains("[GC]")).Select(d => d.Key).ToList();
foreach (var i in itemsWithGC)
{
Console.WriteLine(i);
}
實際上,存在解決此問題的更高效的方法,但是可能需要一些重構...
每當添加包含"[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
因為它是一個集合(即唯一值的無序集合 )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.