C# 来自数据库的正则表达式listview项
您好,在我的上一篇文章中,您可以看到我问了一些关于regex的问题,它成功了 我把从文件夹中获取文件的代码改成了数据库,现在我的正则表达式显然不起作用了 这是如何填写listview的代码C# 来自数据库的正则表达式listview项,c#,wpf,C#,Wpf,您好,在我的上一篇文章中,您可以看到我问了一些关于regex的问题,它成功了 我把从文件夹中获取文件的代码改成了数据库,现在我的正则表达式显然不起作用了 这是如何填写listview的代码 public void DataFromFolders3(string fileName = "*") { LV3.Items.Clear(); SqlDataReader dr; string query = "select * from t
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查询返回的是什么?正则表达式看起来很好-您有一个字符串不起作用的示例吗?它只是选择了一些我放在表中的文件名,然后他们在列表视图中谢谢你非常高兴你能帮助我@艾哈迈迪不担心——我只是花了一段时间才找出问题所在。