【再投稿】「コレクションに追加」がエラーになります。

繰り返し(各行)で、「コレクション:test_table1(データテーブル型)、要素:row」と設定しました。
上記のアクティビティの中で代入で

row(“xyz”).ToString

としました。
ここまでは正常に処理されているようですが、その次のコレクションの追加でエラーになります。
コレクションに追加のプロパティパネル?では「コレクション:list_array(test_column)」として、「項目:row(“aaa”).tostring」としました。
TypeArgumentは上記の項目と一致するようにするためにStringにしています。

list_arrayというコレクションですが、これはDictionary変数(キーがstring型、値がlist型)で、変数パネルの「変数の型」には

「System.Collections.Generic.Dictionary(System.String,System.Collections.Generic.List<System.String>」と表記されています。

test_table1は以下のように取得できています。

[xyz,aaa
xxx,test
xxx,test2
xxx,test3
yyy,test4
yyy,test5
zzz,test6
]

やりたいこととしては、{xxx,{test,test2,test3}},{yyy,{test4,test5}},{zzz,{test6}}のように、列(xyz)が共通のものはまとめて扱えるようにしたいです。

List型ではなく、Dictionary型で実装するのが早いと思いますが。。。

List型:インデックスを都道府県コードとして、都道府県名を得る
Dictionary型:都道府県コードをキーとして、存在する市区町村を得る

って感覚で捉えていますが、如何でしょう?>All

1 Like

こんにちは

どのようなエラーが出ているか等詳細がわかりませんが、
まずはListの初期化が行われているかの点が怪しいように思えます。

とりあえず実装例upしておきます。

Sample20200802-1.zip (16.7 KB)

1 Like

できました!
ありがとうございます。
ContainsKeyという書き方を知りませんでしたが便利なメソッド?ですね。

list_arrayに対しては「new Dictionary(of string, list(of String))」によって連想配列の値のリストについても初期化が終わっていると思っていました。
すみません、もしよければ重ねてお聞きしたいのですがlist_array(key)のリストの初期化の部分の「new list(of string)from{row(“aaa”).ToString()}の最後の「ToString()」が理解できなかったのですが、どう理解したらいいでしょうか。
ちなみにですが()を外して「new list(of string)from{row(“aaa”).ToString}」としても正常に動作したのでなおさらわからなくなりました。

1 Like

List型を使わない形式でのDictionary型ということで「System.Collections.Generic.Dictionary(System.String,System.String)」のようなシンプルな連想配列で統一するということでしょうか
自分も連想配列の値がList型というのは複雑だなと思っていたので、そちらで実現できないか試してみたいと思います。

こんにちは

list_array(key)のリストの初期化の部分の「new list(of string)from{row(“aaa”).ToString()}の最後の「ToString()」が理解できなかったのですが、どう理解したらいいでしょうか。

DataTableの列の型がobject型になっているケースがあるので、文字列型に変換しています。
もし当該列がString型でしてたら、不要かもしれません。
最後のかっこの要否ですが、メソッドには基本的にはかっこが必要なのですが、VB.netでは引数が無い場合は、かっこを省略できる言語仕様となっています。そのため、どちらでもエラーにはなりません。

1 Like

ありがとうございます。
Excelのデータを「範囲を読み込み」アクティビティによってdatatable型に変換しているので、列はobject型になっているようです(実際に「new list(of string)from{row(“aaa”).ToString()}」の中のToStringを外してみたらデバッグするまでもなくその場でエラー(“objectからstring型への変換はできません”)になりました)。

これまでずっとToStringは使っていましたが、ToString()は今回初めて目にして、文字列型ではなく配列型に変換しているのかと誤解していました。
メソッドを意味する()であるという考えには思い至りませんでした。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.