データテーブルをフィルター後、指定行を削除したい

お世話になっております。
データテーブルをフィルターし、抽出された行を削除したいと考えています。

条件ですが以下の条件に合致する行を削除したいと考えています。
・「No」が重複、「締切日」が空欄、「番号」が重複していない

こちらの処理方法について知見がある方教えていただきたいです。
また、絶対データテーブルで処理したいとは考えてはいないので別の方法でも問題ございません。

以上になります。宜しくお願い致します。

こんにちは

処理後を見ると締切日が空欄のものが含まれていますが、結果の間違いか、あるいは一つでも空欄でないものがあればすべて残すのか、あるいは別のルールがあるのか、いずれになりますでしょうか?

とりいそぎ締切日の扱いを除外したサンプルを添付します。(結果は上記通りになります)

dt.AsEnumerable.GroupBy(Function(r) r("No").ToString).Where(Function(g) g.Count=1 OrElse g.GroupBy(Function(r2) r2("番号").ToString).Count()=1).SelectMany(Function(g2) g2).CopyToDataTAble

Sample
Sample20240610-7.zip (9.6 KB)

1 Like

@Yoichi さん
ご返信ありがとうございます。
条件がわかりづらく申し訳ございません。

希望する条件としては以下のものになります!

あるいは一つでも空欄でないものがあればすべて残すのか

そうであれば以下いかがでしょうか?(上記サンプルだけで結果成否がよくわかりませんが)

dt.AsEnumerable.GroupBy(Function(r) r("No").ToString).Where(Function(g) (g.Count=1 OrElse g.GroupBy(Function(r2) r2("番号").ToString).Count()=1) AndAlso g.Any(Function(r3) r3("締切日").ToString<>"")).SelectMany(Function(g2) g2).CopyToDataTAble

Sample20240610-7 (2).zip (9.7 KB)

@Yoichi さん
教えていただきありがとうございます!
実装したところ解決できました!
ありがとうございます。

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