参考链接:http://www.voidcn.com/article/p-pavzanbd-btm.html

使用DataTable.Select(string filterExpression),
或者DataView.RowFilter
设置过滤表达式

DataView dv = new DataView(dt);
dv.RowFilter = 列名称+” like ‘%” +查询内容 + “%’”;
dataGridView1.DataSource = dv;

或者 参考链接:https://blog.csdn.net/u010458948/article/details/102462169

string strTemp = “ like ‘%” + text + “%’” + “or like ‘%” + text + “%’”

  1. + "or *** like '%" + text + "%'" + "or *** like '%" + text + "%'";
  2. DataRow[] drArr1 = dt.Select(strTemp);
  3. DataTable dtNew = dt.Clone();
  4. for (int i = 0; i < drArr1.Length; i++)
  5. {
  6. dtNew.ImportRow(drArr1[i]); //ImportRow 是复制
  7. }

———————————————— 版权声明:本文为CSDN博主「蓝之赟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u010458948/article/details/102462169 当DataTable的列类型为Int类型时会出现: 无法在System.Int32和System.String上执行“Like”操作

需要改为:
dv.RowFilter = string.Format(“CONVERT({0}, System.String) like ‘%{1}%’”, 列名称, 查询内容);

原文:

c# – 无法在System.Int32和System.String上执行“Like”操作. DataGridView搜索和过滤

时间 2018-09-24 原文 https://stackoverflow.com/questions/22328392/cannot-perform-like-operation-on-system-int32-and-system-string-datagridview

我有一个表单,当我从ComboBox中选择一个列名,并在文本框中键入它时,它会过滤并在DataGridView中显示搜索的条件.当我搜索“引用”时,它是一个int数据类型,也是标识和主键.我收到错误消息: “Cannot perform ‘Like’ operation on System.Int32 and System.String.” 我的代码是 DataTable dt;

private void searchForm_Load(object sender, EventArgs e)

{

  1. SqlCeConnection con = new SqlCeConnection(@"Data Source=|DataDirectory|\LWADataBase.sdf;");
  2. SqlCeDataAdapter sda = new SqlCeDataAdapter("select * from customersTBL", con);
  3. dt = new DataTable();
  4. sda.Fill(dt);
  5. dataGridView1.DataSource = dt;
  6. comboSearch.Items.Add("[Reference]");
  7. comboSearch.Items.Add("[First Name]");
  8. comboSearch.Items.Add("[Surename]");
  9. comboSearch.Items.Add("[Address Line 1]");
  10. comboSearch.Items.Add("[Address Line 2]");
  11. comboSearch.Items.Add("[County]");
  12. comboSearch.Items.Add("[Post Code]");
  13. comboSearch.Items.Add("[Contact Number]");
  14. comboSearch.Items.Add("[Email Address]");

}

private void searchTxt_TextChanged(object sender, EventArgs e)

{

  1. if (comboSearch.SelectedItem == null)
  2. {
  3. searchTxt.ReadOnly = true;
  4. MessageBox.Show("Please select a search criteria");
  5. }
  6. else
  7. {
  8. searchTxt.ReadOnly = false;
  9. DataView dv = new DataView(dt);
  10. dv.RowFilter = "" + comboSearch.Text.Trim() + "like '%" + searchTxt.Text.Trim() + "%'";
  11. dataGridView1.DataSource = dv;
  12. }

}

将数字转换为过滤器内的字符串:

dv.RowFilter = string.Format(“CONVERT({0}, System.String) like ‘%{1}%’”,

  1. comboSearch.Text.Trim(), searchTxt.Text.Trim());