投稿者 YUU  (社会人) 投稿日時 2015/12/25 18:38:22
返信ありがとうございます。

>これが何なのかわかりません。
ご指摘ありがとうございます。
正確にはDataTableをLinqでGroupByしたものをDictionaryと比較し上記の処理としています。

>単純に1対1で文字列を変換するだけなら既出の回答
その通りなのですが複数のロジックの中で利用する場合、一部そのペアを取得する際に不都合が生じる処理が有ります。
その為、いくつかDictionaryを用意しているのですがそれも冗長的で・・・。

上記例だと

    Public dic As Dictionary(Of String, String) = New Dictionary(Of String, String)() From {
                                                {"ナノメートル", "nm"},
                                                {"センチメートル", "㎝"},
                                                {"マイクロメートル", "μm"},
                                                {"ミリメートル", "mm"}}

    'これを利用するロジックではミリメートルはスルーしたい。。
    Public dic2 As Dictionary(Of String, String) = New Dictionary(Of String, String)() From {
                                                {"ナノメートル", "nm"},
                                                {"センチメートル", "㎝"},
                                                {"マイクロメートル", "μm"}}

    'ペアが異なる場合
    Public dic3 As Dictionary(Of String, String) = New Dictionary(Of String, String)() From {
                                                {"ナノメートル", "nm"},
                                                {"センチメートル", "㎝"},
                                                {"マイクロメートル", "?"}'別の何かになる場合。}

サンプルが適切ではありませんがこのようなパターンの場合条件分岐ないし何かしら手がないかというニュアンスでした。
分かり難く申し訳ありませんでした。


>そして、その ContainsKey や TryGetValue は、以下のように使います。

分かり易い解説、サンプルありがとうございます。分かった気になっている部分が多く助かりました。
確かに自身のコードでは探索回数が多く最善な処理かと問われると難しいかと。


>管理上は外部ファイルやデータベースの方が楽だと思います。
閲覧、管理共にDBの方がしやすいので検討はしているのですが諸事情により困難な状況です。
それこそ上記サンプルの単位の様に変更の頻度が少なく、更新の必要がないものは決め打ちでもよいかもしれませんね。

>ちなみに app.config の各セクションは、別ファイルにすることも出来ます。
app.configはあまり使い慣れていないのでこれを機会に利用することも検討していきます。