在<string,string [] =“”> </string,>类型的字典中查找值

时间:2013-07-18 15:24:38

标签: c# dictionary

以下是我已经拥有的代码,其中有效:

private string GetRegionByStore(string store)
{
    foreach (string items in d.Keys)
    {
        if (d[items].Contains(store))
        {
            return items;
        }
    }

    return null;
}

这会搜索字典中的键,如下所示:

d.Add("4Q", new string[] { "27", "49", "198", "214", "226", "347", "351", "361", "439", "449", "613", "657", "662", "685" });

有许多条目,如4Q,4Z,4J等,每个条目都有string[],里面有数字。在另一个条目中永远不会有相同的数字,所以不用担心重复。

我现在使用的方法目前正在使用,但它感觉非常hacky并且喜欢这是不好的做法。我可以做一个LINQ查询来实现同样的目的吗?

总结:在每个字典中找到一个数字(?),如果存在,则返回密钥。

3 个答案:

答案 0 :(得分:3)

  

您可以使用此版本代码:

private string GetRegionByStore(string store)
{
     d.Keys.FirstOrDefault(k => d[k].Contains(store));
}
  

要查找字典中的所有键:

private string GetRegionByStore(string store)
{
     d.Keys.Where(k => d[k].Contains(store)).ToList();
}

答案 1 :(得分:2)

类似的东西:

  var strores = d.Where(e => e.Value.Contains("27")).Select(e => e.Key).ToList();

以上内容将从您的Key集合中返回Dictionary<string, string[]>的列表,其中找到的集合的Value包含您搜索过的字符串。

答案 2 :(得分:0)

使用Linq:

d.Single(x => x.Value.Contains("198")).Key // would return "4Q" in your example