データテーブルの中に同じ値があった場合の処理がわからない

以前、下記Q&Aでご回答いただき、代入で試してみたのですが、
dict=
dt.AsEnumerable.GroupBy(Function(r) r(“メールアドレス(1)”).ToString).ToDictionary(Function(g) g.Key,Function(g) g.Select(Function(r) r(“請求管理No”).ToString).ToArray)

エラーが出ます。
キャプチャ

VBがわかっておらず、勉強不足で申し訳ないのですがご教授いただけませんでしょうか。

また、現在は、請求管理NO(顧客番号)ごと、メール、郵送、メールと郵送の3パターンあり、メールの場合は下記のような処理で行っています。
上記エラーがなくなれば、メールの場合は、PDF作成だけいったんすべての顧客番号を行い、そのあとに「dict」の処理でメールの作成を行うのでしょうか。

条件分岐で、メールの場合、

①PDF作成

②指定のフォルダにPDFを保存

③メールは1社につき2通送付。
2通目はパスワードの送付のため、ネットからメールのパスワードを取得。

④②のPDFを「ファイルを圧縮」し、③で取得したパスワードを付ける。

⑤Outlookメールメッセージを送信

こんにちは

プロジェクトがC#になっていませんか?
Studioの右下の部分で確認できるかと思います。

C#になっています。

こんにちは

どちらの言語で作成したいでしょうか?VBで作成したいのであれば、正攻法的にはプロジェクトを
作り直す必要があります。
C#で作成したいのであれば、上記の式はVB用なのでC#用に書き換える必要があります。

ご回答いただきありがとうございます!

今のところ、C#で作成したいと思っております。
お伝えしておらずすみません・・

こんにちは

C#なら以下になります。

dict = dt.AsEnumerable().GroupBy(r=>r["メールアドレス(1)"].ToString()).ToDictionary(g=>g.Key,g=>g.Select(r=> r["請求管理No"].ToString()).ToArray())
1 Like

ありがとうございます!
右辺の一番最初の「dt」が「現在のコンテキストにdtは存在しません」といったエラーが出るため、一覧のデータテーブルの名前「Dt一覧」をいれるとエラーが消えました。

これは、メールアドレスが同じ複数の顧客番号がこの変数に格納されたという認識であっているのでしょうか。

こんにちは

この代入アクティビティの直後のアクティビティにブレイクポイントを設定して、デバッグ実行→ワークフローが止まるので、左側のローカルパネルでdict の中身を確認してみてください。

1 Like

デバックの使い方も教えていただきありがとうございます。

データが格納されていました!
毎回、わかりやすくご説明いただきましてありがとうございます。

ここからの処理はできるかわかりませんが・・いったんやってみようと思います!

1 Like

度々すみません。
ご教授いただけませんでしょうか。

このあとの処理は、条件分岐でメールorメールと郵送の場合、
繰り返し(コレクションの各要素):繰り返し→item 次のコレクション内の各要素→dict
作成していこうと思うのですが、条件分岐の条件でエラーがでます。

条件
row[“請求書送付方法”].ToString()==“メール” Or row[“請求書送付方法”].ToString()==“郵送&メール”

エラー内容
キャプチャ

こんにちは

取り急ぎ、C#ではORは使えませんので、||を使用してみてください。

エラーを消すことができました!ありがとうございます。

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