【问题标题】:How to search from a list inside a dictionary<string, List<string>>如何从字典中的列表中搜索<​​string, List<string>>
【发布时间】:2013-07-30 16:46:06
【问题描述】:

如果我有字典 &lt;string, List&lt;string&gt;&gt;。 (例如> 我想拉出键'12345',其中列表中每个条目的字符串列表中有“456”。 所以我的结果将是另一个列表。 这不是用 linq 语句来完成的吗?

【问题讨论】:

    标签: c# linq dictionary


    【解决方案1】:

    这不是用 linq 语句来完成的吗?

    当然。它不会高效,但它非常简单:

    var input = "456";
    var matchingKeys = dictionary.Where(kvp => kvp.Value.Contains(input))
                                 .Select(kvp => kvp.Key);
    

    如果您也希望它高效,您也应该存储反向映射,并同时更新两者。

    【讨论】:

      【解决方案2】:

      这也可以在没有 LINQ 的情况下轻松完成,尽管正如 Jon 所提到的,如果您的 Dictionary 包含大量键/值,这将不会真正有效。这是一个与 Jon 的答案完全相同的扩展方法,没有 LINQ:

      public static List<TKey> GetMatchingKeys<TKey, TValue>(this IDictionary<TKey, ICollection<TValue>> src, TValue toFind)
      {
          List<TKey> returnVal = new List<TKey>();
      
          foreach (KeyValuePair<TKey, ICollection<TValue>> kv in src)
          {
              if (kv.Value.Contains(toFind))
              {
                  returnVal.Add(kv.Key);
              }
          }
      
          return returnVal;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-12-17
        • 2018-12-27
        • 1970-01-01
        • 2023-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 2021-10-08
        相关资源
        最近更新 更多