簡體   English   中英

如果值包含字符串,則獲取字典鍵

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM