LINQを使ったデータの抽出

以前こちらでLINQの書き方についてご教示いただき、あらゆる場面で使用させていただいております。
今回、想定通りの結果にならず原因をご教示いただければと思い投稿させていただきます。

スクリーンショット 2021-09-07 115016

上記のような内容のデータテーブルがあり、この中から「"ID"か"メニュー"か"個数"のどれかが一致しないデータ」を抽出したいです。(例では5行目のデータが該当)

以下のように記述しているのですが、すべて一致しているデータが抽出されてしまいます。
※実際のデータでは比較する項目が30ずつあり、すべてをOrで連結させて羅列しています。

dtJoin.AsEnumerable.Where(Function(r) r("ID").ToString<>r("ID_1").ToString Or r("メニュー").ToString<>r("メニュー_1").ToString Or r("個数").ToString<>r("個数_1").ToString).CopyToDataTable()

どこを直せばよいでしょうか。
宜しくお願い致します。
sample.xlsx (9.9 KB)

こんにちは

サンプルの元データをxlsxファイルとして共有できますか?

sampleデータを添付いたしましたが、実際に抽出するデータはまったく別のデータになります。
量が増えても条件は変わらないかと思いサンプルとしてあげさせていただいております。

宜しくお願い致します。

こんにちは

添付いただいたデータで、上記式を実行しましたが、正常に返ってきました。

可能性としては、元のデータの各項目が正確には異なる(例えば余分な空白がついている等)のでは
無いでしょうか?

今一度元データを確認いただくか、現象を再現できるデータを添付いただければと思います。

1 Like

そうですよね。。
こちらでプライベートなスレッド等を立てることはできるものでしょうか?
実際のデータと式の記述内容を共有したいのですがオープンな場所で共有することができず、、

こんにちは

(Private) Messageで送っていただければ、あて先以外には公開はされませんが....
データの扱いがどのようになるかはこちらでは保証できませんので、自己判断でお願いします。

1 Like

ありがとうございます。messageを送らせていただきました。
大変お手数ですが、ご確認いただけますと幸いです。

「_1」がついているデータがcsvから読み込んだデータで、枝番のないほうは取得したデータのまま使っていることが原因でした。
枝番のついていないほうも一度csvに吐き出してから再度読み込み同じcsvデータを元データとすることで解決致しました。

2 Likes

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