◆带变量的通配符如何写法◆

ChinaOneCup 2012-08-11 01:46:30
在过滤datatable记录的时候,输入内容如果出现通配符:[、]、%、*等等,会出现 Like 运算符中出错: 字符串模式“% %”无效的情况,如下
string s=tb.Text
string str = " text like '%" + s + "%'";
DataRow[] dr = dt.Select(str);

改成这样写也不行
string str =  @"text like '%" + @s + "%'";


...全文
149 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaOneCup 2012-08-28
  • 打赏
  • 举报
回复
还有没有其他办法
ChinaOneCup 2012-08-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
s = "addr like '%" + s + "%' " + " or mphone like '" + s + "%' or tel like '" + s + "%' ";是可以的啊。你怎么测试的不行的?

例子

C# code


System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser"……
[/Quote]

你把string s = "输入内容" 修改成 string s = "内容[" 看看
  • 打赏
  • 举报
回复


//用&&


var source= datatable.AsEnumerable().Where(t => t.Field<string>("addr").Contains(tb.Text.Trim())&&t.Field<string>("mphone").Contains(tb.Text.Trim())&&t.Field<string>("tel").Contains(tb.Text.Trim()));
孟子E章 2012-08-11
  • 打赏
  • 举报
回复
s = "addr like '%" + s + "%' " + " or mphone like '" + s + "%' or tel like '" + s + "%' ";是可以的啊。你怎么测试的不行的?

例子

System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
System.Data.DataRow d;
dataTable1.Columns.Add(new System.Data.DataColumn("Id", typeof(System.Int32)));
dataTable1.Columns.Add(new System.Data.DataColumn("Tel", typeof(System.String)));
dataTable1.Columns.Add(new System.Data.DataColumn("addr", typeof(System.String)));
dataTable1.Rows.Add(new Object[] { 1, "测试1", "在过滤datatable记录的时候" });
dataTable1.Rows.Add(new Object[] { 2, "输入内容如果出现通配符", "在过滤datatable记录的时候" });
dataTable1.Rows.Add(new Object[] { 3, "输入内容如果出现通配符", "输入内容如果出现通配符" });
dataTable1.Rows.Add(new Object[] { 4, "测试1", "输入内容如果出现通配符" });
GridView1.DataSource = dataTable1;
GridView1.DataBind();
string s = "输入内容";
string str = "addr like '%" + s + "%' or Tel like '%" + s + "%'";
System.Data.DataRow[] dr = dataTable1.Select(str);
MessageBox.Show(dr.Length.ToString());
ChinaOneCup 2012-08-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
var source= datatable.AsEnumerable().Where(t => t.Field<string>("text").Contains(tb.Text.Trim()));
[/Quote]

如果有两个或者两个以上的字段要过滤时,如何写呢,比如:
s = "addr like '%" + s + "%' " + " or mphone like '" + s + "%' or tel like '" + s + "%' ";
  • 打赏
  • 举报
回复
var source= datatable.AsEnumerable().Where(t => t.Field<string>("text").Contains(tb.Text.Trim()));

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧