お世話になります。
データテーブルのフィルターを行いたいのですが、どのように設定すればよいでしょうか。以下の形式でなければデータテーブルに残すようにしたいです。
「0099/〇〇XX」(〇は任意の文字、Xは任意の数字)
FilterDatatableで指定しようとしましたが、方法がわからず詰まっています。
よろしくお願いします。
お世話になります。
データテーブルのフィルターを行いたいのですが、どのように設定すればよいでしょうか。以下の形式でなければデータテーブルに残すようにしたいです。
「0099/〇〇XX」(〇は任意の文字、Xは任意の数字)
FilterDatatableで指定しようとしましたが、方法がわからず詰まっています。
よろしくお願いします。
こんにちは。
行フィルターモードを削除
containsで値を0099/
ではダメでしょうか?
他にも条件がありますか?
返信ありがとうございます。説明不足で申し訳ありません。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のどれか、になりますか?
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件になる場合は例外になりますので、別途対応が必要になります。
すみません。YOICHIさんのほうが早かったですね。
YOICHIさん、いつもありがとうございます!
私もC列については正規表現で作ってました。notの位置がわからず調べてました。(´ω`)
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.