匹配DataView RowFilter中的单个字符?

时间:2012-05-09 17:11:25

标签: c# asp.net regex dataview rowfilter

我想知道是否有可能在提供单字符匹配的RowFilter上应用DataView

e.g。 DataView.RowFilter =“SOME_COL喜欢'A_BCD%';

其中下划线表示Oracle SQL中的单字符匹配,%是0或更多字符的通配符。

显然RowFilter只在匹配表达式的开头或结尾支持通配符(* or %)。我唯一的另一个想法是遍历行并删除与正则表达式不匹配的行,但这并不理想。

任何帮助或想法将不胜感激! 感谢

2 个答案:

答案 0 :(得分: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 . . .

答案 1 :(得分:2)

可替换地,

DataView.RowFilter = "Substring(SOME_COL, 1, 1) = 'A' and Substring(SOME_COL, 3, 3) = 'BCD';"