以下是我已经拥有的代码,其中有效:
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查询来实现同样的目的吗?
总结:在每个字典中找到一个数字(?),如果存在,则返回密钥。
答案 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