Dictionaryの使い方　個人メモ

##はじめに
Dictionaryの使用方法についての個人的な備忘録用の為内容は随時更新・追加します。

##Dictionary構造例
Arrayなどの配列はindex(連番の数字)で管理、Dictionaryはkeyに設定したデータで管理する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/03efdc0b-35f0-3d5d-a66c-56c1b75a3a37.png)


##Dictionary変数の設定
今回はdicAdressという会社の住所を格納するDictionary変数を設定してみます。
変数名を設定後に変数の型を選択しますがデフォルトでは表示されない為参照する必要があります。
**１．変数の「型の参照…」を選択し参照画面を開く**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/26a7d565-cb16-e45d-9ba0-76f0cf291625.png)
**２.型の名前で「<font color =red><b>System.Collections.Generic.Dictionary</b></font>」を検索する**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/afd8e3c5-74b0-4e5a-1c1a-8a17946c96df.png)
※因みにDictionaryだけで検索するといっぱい出てくるのでその場合下記画像の赤枠を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/2fecfe4e-c57a-4efc-6828-cd7ebc700973.png)
<b>３．Keyとvalueのデータ型を選択する</b>
今回はどちらもStringを選択しますが用途に合わせて設定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/abc1a606-c7da-0bf0-562e-d0ec6af512e0.png)
<b>４．規定値の設定</b>
<b>new Dictionary(of <font color =red>keyのデータ型,valueのデータ型</font></b>)
を変数の規定値に入力する。
これを設定しないと実行時にエラーが起きるので忘れずに設定しましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/69ee2f55-9fe9-8c7e-6929-4e3f5c4df5fe.png)
もしくはフロー内にAssignを設置し下記の様に記載する
　左辺値：Dictionary変数
　右辺値：new Dictionary(of キーのデータ型,値のデータ型)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/7f2ba74b-04b5-20ca-518d-71c7c815a29a.png)
これでdicAdressを使用する準備が出来たので次は値を格納してみましょう。
##値の格納
良く使用する追加方法を記載します。
ワークフローにAssignを設置し下記を設定します。
左辺値：Dictionary変数(key)
右辺値：value
下記画像だと
Key：<b><font color=blue>東京支店</font></b>　value：<b><font color=blue>東京都北区×××</font></b>となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/4330e1e7-7400-e0aa-c54d-6fd7d0abaa34.png)

登録したいデータは下記画像のような構成になっているが上記の方法だとだと1つしか設定できない・・・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/4b6f92d7-d237-ba7e-1f9c-b297d2a7cc58.png)
↑のすべてを格納するにはどうするか。
１．住所シートから住所一覧表を読み込んでdtAdressに格納する
２．For Each Row内にDictionaryに追加する処理を入れる
　左辺値：dicAdress(row("支店名").ToString)
　右辺値：row("住所").ToString
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/7d4dd6dc-968e-0f77-72c5-94d265af8b2c.png)
これで住所シートの住所一覧がdicAdressに追加されました！
※Dictionaryに追加方法は他にもありますが今回は省略します。

##追加したデータの確認
さてdicAdressに追加処理を行いましたが本当に追加されているのか確認したい！ということで格納したデータを参照したいと思います。
####①一つだけ指定して取得する場合
**Dictionary変数("<font color=Red>Key</Font>")**
というようにkeyを指定して取得したいデータを参照します。

(例)福岡支店の住所を取得したい！
1行に書き込みアクティビティに記載して実行してみました
**Dictionary変数("<font color=Red>福岡支店</Font>")**と支店名をkeyに指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/288f7604-100a-60ef-43b9-123bd37c11dd.png)
【実行結果】
きちんと福岡支店の住所が出力されています！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/3da2e913-b558-2ccb-b1a1-81093849232f.png)
####②全件取得する場合
一つだけ指定して格納されているデータを参照することが出来ましたが今回は追加した全件を取得し確認したいと思います。
　１．ワークフローにForEachを設置します。
　２．プロパティ画面でTypeArgumentに「<font color=red><b>System.Collections.Generic.KeyValuePair</b></font>」を検索しデータの型を設定します。
今回は両方Stringで設定しています(Dictionaryで設定した型と同じ)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/af9da5db-bdaa-9fb6-bb2d-db5add2cfdef.png)
３．ForEach内に1行に書き込みを設置し下記の様に記載
「<b>item<font color=red>.Key</b></font> +"の住所は「" + <b>item<font color=red>.Value</b></font> + "」です。」
<font color=red><b>.Key</b></font>で設定したKeyが<font color=red><b>.Value</b></font>でKeyに紐づいたvalueが取得できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/859db8de-a452-e8f0-8cd0-bd4020f79caa.png)
４．実行してみましょう。
　全件指定した文章校正で出力されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482005/738cd70c-f18f-8bab-2c52-a0821c89ee2e.png)

##削除
　後程追記予定

##その他
後で設定情報をDictionaryに設定する共通部品についてここにUP予定