C# 在类型为

C# 在类型为,c#,dictionary,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", n

以下是我已有的代码,它可以工作:

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等,每个条目都有一个字符串[],里面有数字。在另一个条目中永远不会有相同的数字,因此不必担心重复

我现在使用的方法很管用,但感觉很粗糙,而且是一种糟糕的做法。我是否可以通过LINQ查询实现同样的功能

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

类似于:

  var strores = d.Where(e => e.Value.Contains("27")).Select(e => e.Key).ToList();
上面将返回字典集合中的键列表,其中集合的值包含您搜索的字符串。

类似于:

  var strores = d.Where(e => e.Value.Contains("27")).Select(e => e.Key).ToList();
上面将返回字典集合中的键列表,其中集合的值包含您搜索的字符串

您可以使用以下版本代码:

要在字典中查找所有键,请执行以下操作:

您可以使用以下版本代码:

要在字典中查找所有键,请执行以下操作:

使用Linq:

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

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

我认为这一点也不令人讨厌。我认为这段代码非常简单易懂。我不确定可能存在的LINQ查询是否会像您这里的代码一样容易阅读/理解。我认为这一点都不粗糙。我认为这段代码非常简单易懂。我不确定可能存在的LINQ查询是否会像这里的代码一样容易阅读/理解。>FirstOrDefault方法返回第一个键,其中其collection包含变量存储的值,如果不存在任何键,则返回null,becase是字符串类型的默认值。>FirstOrDefault方法返回其集合包含变量存储值的第一个键,如果不存在任何键返回null,becase是字符串类型的默认值。