C# 来自数据库的正则表达式listview项

C# 来自数据库的正则表达式listview项,c#,wpf,C#,Wpf,您好,在我的上一篇文章中,您可以看到我问了一些关于regex的问题,它成功了 我把从文件夹中获取文件的代码改成了数据库,现在我的正则表达式显然不起作用了 这是如何填写listview的代码 public void DataFromFolders3(string fileName = "*") { LV3.Items.Clear(); SqlDataReader dr; string query = "select * from t

您好,在我的上一篇文章中,您可以看到我问了一些关于regex的问题,它成功了

我把从文件夹中获取文件的代码改成了数据库,现在我的正则表达式显然不起作用了

这是如何填写listview的代码

   public void DataFromFolders3(string fileName = "*")
    {

        LV3.Items.Clear();

        SqlDataReader dr;
        string query = "select * from tblBestanden2 WHERE datum LIKE " + "'" + fileName + "'";
        SqlConnection con = new SqlConnection(connectionString);

        SqlCommand cmd = new SqlCommand(query, con);

        con.Open();
        dr = cmd.ExecuteReader();

        while (dr.Read())
        {

            LV3.Items.Add(dr["Name"]);

            Regex regex = new Regex("^zw1[0-9]*");

            if (regex.IsMatch(???))
            {
                LV3.Items.Remove(???);
            }
3级是我的listview

   public void DataFromFolders3(string fileName = "*")
    {

        LV3.Items.Clear();

        SqlDataReader dr;
        string query = "select * from tblBestanden2 WHERE datum LIKE " + "'" + fileName + "'";
        SqlConnection con = new SqlConnection(connectionString);

        SqlCommand cmd = new SqlCommand(query, con);

        con.Open();
        dr = cmd.ExecuteReader();

        while (dr.Read())
        {

            LV3.Items.Add(dr["Name"]);

            Regex regex = new Regex("^zw1[0-9]*");

            if (regex.IsMatch(???))
            {
                LV3.Items.Remove(???);
            }
我试过这样做

            if (regex.IsMatch(dr["Name"]))
            {
                LV3.Items.Remove(dr["Name"]);
            }
但它不起作用


提前感谢

这可能是SQL问题。看起来您正在将文件名
*
传递给like子句,但这是DOS通配符。SQL使用
%
(对于单个字符使用

发布的代码唯一的问题是datareader返回对象,而其他函数需要字符串。如果你像这样转换它们,它应该可以工作

        if (regex.IsMatch(dr["Name"].ToString()))
        {
            LV3.Items.Remove(dr["Name"].ToString());
        }
更妙的是,与先添加后删除不同,您只能在它们不匹配时添加

Regex regex = new Regex("^zw1[0-9]*");
while (dr.Read())
{
    if (!regex.IsMatch(dr["Name"].ToString()))
    { 
        LV3.Items.Add(dr["Name"].ToString());
    }
 }

你能提供例子数据吗,包括一个应该匹配的示例和一个不应该匹配的示例?它不应该匹配zwaan123213,但应该匹配zw1324543与ListView中的文件。SQL查询返回的是什么?正则表达式看起来很好-您有一个字符串不起作用的示例吗?它只是选择了一些我放在表中的文件名,然后他们在列表视图中谢谢你非常高兴你能帮助我@艾哈迈迪不担心——我只是花了一段时间才找出问题所在。