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[]に数字が入っています。別のエントリに同じ番号が存在することはないため、重複の心配はありません。

私が現在使用している方法は現在機能していますが、非常にハッキリしていて、悪い習慣のようです。同じことを達成するために実行できる 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();

上記は、コレクションの に検索した文字列が含まれていることが判明したコレクションからKeyのリストを返します。Dictionary<string, string[]>Value

于 2013-07-18T15:38:19.760 に答える