использование оператора like в операторе if в C#

#c#-4.0

#c #-4.0

Вопрос:

У меня есть текстовое поле для поиска (то есть TextBox1), например, пользователь вводит «aba» в TextBox1. «abandon» помещает в datagridiew1. Пользователь нажимает на datagriview1:

 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    richTextBox_MWE.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
    if ("richTextBox_MWE.Text like '%"   textBox1.Text   "%'")
    {
        label5.BackColor = Color.Green;
    }
}
 

Я хочу, чтобы «abandon» был таким, как «aba» в текстовом поле 1, label5.BackColor стал зеленым.

Комментарии:

1. Как правило, вы хотели бы рассмотреть регулярные выражения ( msdn.microsoft.com/en-us/library/hs600312.aspx ) как .NET-эквивалент SQL-ПОДОБНОГО оператора, но в данном конкретном случае вы можете просто использовать . Содержит метод().

Ответ №1:

Простой способ — использовать событие изменения TextBox1 (где фактически будет изменяться содержимое фильтра)

 if(!String.IsNullOrEmpty(richTextBox_MWE.Text) amp;amp; richTextBox_MWE.Text.Trim().Contains(textBox1.Text.Trim()))
{
  label5.BackColor = Color.Green;
}
 

Комментарии:

1. Большое спасибо. Я также хочу настроить функцию Contains, то есть, если я введу «1», просто функция Contains найдет «1», а не «11» или «21» или ….

Ответ №2:

Вы хотите использовать какое-то сочетание C# и sql 🙂 Вы можете использовать строку.Содержит метод для достижения того, чего вы хотите.

 if(richTextBox_MWE.Text != null
    amp;amp; richTextBox_MWE.Text.Contains(textBox1.Text.Trim())
{
    ...
}
 

Ответ №3:

 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
    richTextBox_MWE.Text = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
    if (!String.IsNullOrEmpty(richTextBox_MWE.Text) amp;amp; !String.IsNullOrEmpty(textBox1.Text) amp;amp; richTextBox_MWE.Text.Contains(textBox1.Text.Trim()))
    {
        label5.BackColor = Color.Green;
    }
}
 

Здесь contains будет принимать значение для поиска.

Комментарии:

1. » как ‘%%’ верно.

Ответ №4:

Смотрите фрагмент из моего кода. txtProductCode — это текстовое поле, которое пользователь заполняет product_code для поиска в представлении списка.

         string tmpProductCode = txtProductCode.Text.Trim();
        string tmpProductCodePattern = "^"   Regex.Escape(tmpProductCode).Replace("%", ".*")   "$";
 

В моем цикле product_code (ов) ProdCode будет содержать значение product_code для каждого цикла.

         productCodeClause = false;              
        if (tmpProductCode.Equals(""))
        {
            productCodeClause = true;
        }
        else
        {
            if (Regex.IsMatch(prodCode, tmpProductCodePattern))
            {
                productCodeClause = true;
            }
        }
 

Я надеюсь, что это будет полезно.