データテーブルのフィルター方法

お世話になります。
データテーブルのフィルターを行いたいのですが、どのように設定すればよいでしょうか。以下の形式でなければデータテーブルに残すようにしたいです。
「0099/〇〇XX」(〇は任意の文字、Xは任意の数字)

FilterDatatableで指定しようとしましたが、方法がわからず詰まっています。
よろしくお願いします。

こんにちは。

行フィルターモードを削除
containsで値を0099/
ではダメでしょうか?
他にも条件がありますか?

1 Like

返信ありがとうございます。説明不足で申し訳ありません。1点記載ミスもありました。。
A列が「t」からはじまっている文字列、かつB列が「h」から始まっている文字列、かつC列が「00X99/〇〇XX」の行を保持したいです。
(「0099/〇〇XX」ではなく「00X99/〇〇XX」でした、申し訳ありません。)
FilterDatatacle以外でも方法があれば教えていただきたいです。

A列とB列は、フィルターウィザードの保持で、starts withで、1行目にA列、値をt
andで2行目はB列、値をh
ここまではいけそうです。
C列の様子がいまいちわからないのですが、00XのXは0〜9のどれか、になりますか?

1 Like

C列のXは任意の数字1文字となるので、0-9のいずれかになります。
C列の判定については、
「00699/あい34」→OKのため、データテーブルから削除
「0099/あい34」→NGのため、データテーブルに保持
「あいうえお」→NGのため、データテーブルに保持
というようにしたいです。

こんにちは

複雑な条件の場合、フィルターデーターテーブルアクティビティでは実現が難しいと思います。

保持したいのであれば

newDt = dt.AsEnumerable.Where(Function(r) r("Column1").ToString.StartsWith("t") AndAlso  r("Column2").ToString.StartsWith("h") AndAlso System.Text.RegularExpressions.Regex.IsMatch(r("Column3").ToString,"^00\d99/..\d\d$")).CopyToDataTable

例は削除したいようなので、削除したいのであれば

newDt = dt.AsEnumerable.Where(Function(r) not (r("Column1").ToString.StartsWith("t") AndAlso  r("Column2").ToString.StartsWith("h") AndAlso System.Text.RegularExpressions.Regex.IsMatch(r("Column3").ToString,"^00\d99/..\d\d$"))).CopyToDataTable

列名が不明確なので、適当に読み替えてください。
結果が0件になる場合は例外になりますので、別途対応が必要になります。

3 Likes

すみません。YOICHIさんのほうが早かったですね。
YOICHIさん、いつもありがとうございます!

私もC列については正規表現で作ってました。notの位置がわからず調べてました。(´ω`)

2 Likes

@Yoichi
ご回答ありがとうございます。
列名等変更して、残したい部分を残せました!ありがとうございます。
データテーブルのコピー方法、今後も使ってみます。

2 Likes

@poke
お時間割いて調べていただきありがとうございます!
解決できました。
1つのアクティビティにこだわらず、正規表現等で実現できるよう今後は柔軟に考えられるよう努力します。

1 Like

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