nara1
(nara1)
1
いつも参考にさせていただいております。
毎週同じ条件を検索し、更新情報を確認したいと思っております。

前回データ:LastDT
今回データ:ExtractDataTable
以下の式で前回と同一か否かを判定させることまではできました。
LastDT.AsEnumerable.SequenceEqual(ExtractDataTable.AsEnumerable, DataRowComparer.Default)
これにもう一歩踏み込んで、何が変わったかを表示したいと考えております。
特に注意したいのは、URLは同じでも価格が変更した場合などです。
わかりやすい方法があればご教示いただけないでしょうか。
よろしくお願いいたします。
こんにちは
ここまで出来たらが素晴らしいです。次にも簡単ができると思ういます。
これは SequenceEqualの逆的のメソッド使ったら解決できるじゃないですか?
ちなみに以下になります。まぁ ご参考までに
ExtractDataTable.AsEnumerable.Except(LastDT.AsEnumerable, System.Data.DataRowComparer.Default)
上記のコードは今回のデータ(ExtractDataTable)と前回のデータ(LastDT)が変わったというデータが同じじゃない(ごめん日本語が正しくないと思います 笑)ところがあれば差異行を取得します。
1 Like
nara1
(nara1)
3
nguyendinhduc269様
ご回答ありがとうございます。
datatable同士の比較は、このForum上で同じようなやりとりの式を拝借したものです。
AsEnumerableについてわかっておらず恐縮ですが、いただいた式ですと下記のように表示されました。

AsEnumerable.SequenceEqualと、AsEnumerable.Exceptの違いだと思うのですが、
LastDTとExtractDataTableの型を変更しなければいけないのでしょうか?
ヒントを下さったら幸いでございます。
Ifの条件なのでTrue or Falseの価値を設定しなければならないですね。
ExtractDataTable.AsEnumerable.Except(LastDT.AsEnumerable, System.Data.DataRowComparer.Default)
これだとDataTableの型なので条件にならないですね。
ちょっと考えてみると変わったのデータが有るというのは上記のDataTableのRow > 0 じゃなですか?
それだったらデータが変わった場合の条件は以下になりますね
ExtractDataTable.AsEnumerable.Except(LastDT.AsEnumerable, System.Data.DataRowComparer.Default).Count > 0
変わったデータを取得したい場合は
changedDT = ExtractDataTable.AsEnumerable.Except(LastDT.AsEnumerable, System.Data.DataRowComparer.Default).CopyToDataTable()
コードが足りなかった申し訳ないねー
nara1
(nara1)
6
nguyendinhduc269様
ご回答ありがとうございます!
いただいた式で期待通りの結果を得ることができました。
データが変わったかをまず条件分岐とし、変わったデータをchangedDTとして持たせるやり方はこれからも重宝します。
本当に助かりました。ありがとうございます!
system
(system)
Closed
7
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.