2

単一文字の一致を提供する aRowFilterに aを適用する方法があるかどうか疑問に思っていますか?DataView

例: DataView.RowFilter = "SOME_COL like 'A_BCD%';

ここで、アンダースコアは Oracle SQL での 1 文字の一致を表し、%0 文字以上のワイルドカードです。

どうやら RowFilter はワイルドカード (* or %)一致する式の最初または最後でのみサポートしています。私が持っていた他の唯一のアイデアは、行を繰り返し処理し、正規表現と一致しないものを削除することですが、これは理想的ではありません.

どんな助けやアイデアも大歓迎です!ありがとう

4

2 に答える 2

4

あるいは、

DataView.RowFilter = "Substring(SOME_COL, 1, 1) = 'A' and Substring(SOME_COL, 3, 3) = 'BCD';"
于 2016-03-08T06:22:57.660 に答える
3

これを行うには、Linq to Datasets を使用できます

class Program
{

    static void Main(string[] args)
    {
        DataTable dt = new DataTable("test");
        dt.Columns.Add("SOME_COL", typeof(string));

        dt.Rows.Add("AABCDEFG");
        dt.Rows.Add("AZBCDEFG");
        dt.Rows.Add("AZZBCDEFG");
        dt.Rows.Add("ABC");

        Regex r = new Regex("A\\wBCDE");

        DataView dv 
           = (from t in dt.AsEnumerable()
              where r.IsMatch(t.Field<string>("SOME_COL"))
             select t).AsDataView();

        foreach(DataRowView row in dv)
        {
            Console.WriteLine(row[0]);
        }


    }


}

出力

AABCDEFG
AZBCDEFG
Press any key to continue . . .
于 2012-05-09T17:39:48.570 に答える