データテーブルの値を配列に変換したい

初歩的な質問かもしれませんがご教示いただければ幸いです。

データテーブルの値を配列に変換したいのですが、
コレクションに追加や、代入等を使ってもやり方が悪いのかうまくいきません。
再現する方法をご教示いただけないでしょうか。

こんにちは

Object型配列でよければ、元のDataTableをdtとすると、

dt.Rows(0).ItemArray

で取得できます。

1 Like

理解力が乏しくて申し訳ありません・・・
それはデータテーブルごとに繰り返し処理を行い、
代入で右辺に上記の式を記載し、左辺にオブジェクト型の配列を用意するということですか?

こんにちは

この部分の意図がよくわかりませんが、上図ではデータテーブルは1行3列の構成でしたので
それを前提にしています。
上記前提下でしたら、繰り返し処理は不要で単に代入アクティビティで

arrayObject = dt.Rows(0).ItemArray

で取得できます。

すみません、簡略化してしまいあのような形で質問させていただきました。
実際に今現状でやりたいのは以下となっております。

データテーブルが2つ存在し、
データテーブル1で繰り返しを行い、データテーブル1の項目を配列にあてはめ、
その繰り返し内でデータテーブル2の繰り返しを行い、条件に一致した場合、
対象となる行の対象となる項目を配列にあてはめる処理をしたいと考えています。

▼イメージ

▼現状(いけてない箇所が多く、エラーになっていますが無視してください)


こんにちは

上記は
a=j かつ b=k の場合に {"a","b","c","i","m"} としたいということでしょうか?
もしそうであれば、データテーブルを結合アクティビティを使うと良いように思えます。

1 Like

条件についてですが、少し複雑で、
先ほどの資料とは別に変数でデータテーブル2の名前と同じ値を持つデータテーブルから値を取得し、
その値と、データテーブル2の名前が一致した場合、データテーブル2の対象となる行の値を配列に格納する流れとなっております。

なので、条件はあくまでデータテーブル2から対象となる行を見つけ出すための条件なので、
最終的に{“a”,“b”,“c”,“i”,“m”}の形になれば問題ありません

こんにちは

文面だけですと仕様がよくわかりませんが、データテーブルの結合やフィルターで実現
できそうなら、そちらでアプローチした方が良いように思えます。

なお、繰り返し(各行)の中で、当該行を配列にするには
上記画像ですと

Row.ItemArray

あるいは

Row2.ItemArray

でそれぞれobject配列が返ってきます。

1 Like

ありがとうございます!
文章だと表現が難しいですね・・・
一旦各行繰り返しで配列にして再現できるか試してみます
またつまずいたら申し訳ありませんがご質問させていただきます!

こんにちは

アドバイスをいただいた通りそれぞれをオブジェクト型の配列に変換し、
その配列を1つのオブジェクト型の配列にすることに成功したのですが、
その後、そのオブジェクト型の配列をデータテーブルに行を追加しようとしたところ、以下のエラーが出力されました。
オブジェクト型配列をstring型配列に変換は可能でしょうか


こんにちは

このエラーは型の問題ではなく、変数に中身が無いことによるものです。
今一度セットした変数の中身を確認いただくと良いと思います。

確認したところ変数にも値が入っていました。
設定の仕方に問題があるのでしょうか?
データテーブル1、2を配列に変換し、
データテーブル1をList型に変換した後、データテーブル2の値を追加し、
再度配列に戻し、その後、別のデータテーブルに行追加として、
先ほど結合した配列を設定いたしました。


image

▼変数

こんにちは

DataTable 側がnullなのではないでしょうか?

1 Like

事前にデータテーブルを構築せずに行追加をしようとしていたことによるエラーでした!
ご相談に乗っていただきありがとうございました!

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