Как отфильтровать строку, используя c #, используя логику LIKE в SQL? - PullRequest
2 голосов
/ 06 апреля 2010

У меня есть строковая переменная в C #, также известная как product_name, я хочу отфильтровать ее так, чтобы она возвращала true или false:

product_name LIKE '%BONUS NAME%' 

Как мне это сделать, пожалуйста?

PS: я должен делать это на C #, а не на SQL

Ответы [ 3 ]

14 голосов
/ 06 апреля 2010

Простой вариант: использовать String.Contains

http://msdn.microsoft.com/en-us/library/system.string.contains.aspx

Пример со страницы MSDN

// This example demonstrates the String.Contains() method
using System;

class Sample 
{
    public static void Main() 
    {
    string s1 = "The quick brown fox jumps over the lazy dog";
    string s2 = "fox";
    bool b;
    b = s1.Contains(s2);
    Console.WriteLine("Is the string, s2, in the string, s1?: {0}", b);
    }
}
/*
This example produces the following results:

Is the string, s2, in the string, s1?: True
*/

Более надежный: используйте библиотеку регулярных выражений

http://msdn.microsoft.com/en-us/library/twcw2f1c.aspx

Регулярные выражения дают вам гораздо больше возможностей, но вы можете имитировать подстановочные знаки SQL с помощью операторов регулярных выражений '. и '*'

string text = "The quick brown fox jumps over the lazy dog";
string pat = @"fox";

// Instantiate the regular expression object.
Regex r = new Regex(pat, RegexOptions.IgnoreCase);

// Match the regular expression pattern against a text string.
Match m = r.Match(text);
4 голосов
/ 06 апреля 2010
if(product_name.Contains("BONUS NAME"))
    // do stuff..
2 голосов
/ 06 апреля 2010

Мой предпочтительный способ сопоставления части строки - использование метода IndexOf:

string input = "This is My FuLl string";
string lookFor = "full";
bool foundIt = input.IndexOf(lookFor, StringComparison.OrdinalIgnoreCase) >= 0;

В отличие от Contains открывается для сопоставления без учета регистра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...