1

这是我已经拥有的代码,它有效:

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[]里面都有一个with数字。另一个条目中永远不会有相同的数字,所以不用担心重复。

我现在使用的方法目前有效,但感觉很hacky,而且好像是不好的做法。有没有我可以做的 LINQ 查询来实现同样的事情?

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

4

3 回答 3

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();
}
于 2013-07-18T15:39:28.740 回答
2

就像是:

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

以上将返回集合中的 s 列表,其中集合的Keys包含您搜索的字符串。Dictionary<string, string[]>Value

于 2013-07-18T15:38:19.760 回答
0

使用 Linq:

d.Single(x => x.Value.Contains("198")).Key // would return "4Q" in your example
于 2013-07-18T15:40:20.290 回答