如何使用具有sql LIKE条件功能的C#contains方法?

时间:2013-05-25 05:07:46

标签: c# sql-server

我希望能够像在sql中使用like运算符一样使用contains函数。因此,当我从列表中调用.contains(%This %%%%%%是%% my%string %%)或其他诸如"这是我的字符串"然后该函数将返回true。我做了很多搜索,似乎很多人都喜欢这个功能。那么如何做到这一点,或者如何制作具有相同功能的自定义功能呢?

EDIT 谢谢你的快速反应。我能够在我自己的自定义Like函数中使用正则表达式。下面是其他任何想要使用类似于SQL Like的人的代码。在此代码中,用户将输入数据库值,然后将该值中的空格替换为。*以忽略值之间的任何内容。就像使用%来替换SQL中的空格和值一样。然后我可以使用.Like我的字符串值testValue,我正在搜索返回true或false,具体取决于我的字符串中是否包含单词或其他内容。我还添加了ToUpper以忽略这种情况。 // C#Like函数

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace sqllinqstuff
{


class Program
{
    static void Main(string[] args)
    {
        string testValue = "Big RED           Car";

        string databaze = "big red CAR";

        string databaze3 = databaze.Replace("     ", ".*");
        databaze3 = databaze3.Replace(" ", ".*");

        Console.WriteLine(databaze3);
        Console.WriteLine(testValue.Like(databaze3)); 

Console.Read();

    }
}



public static class CaseyStringExtension
{
    public static bool Like(this string str,string value)
    {
        if (!string.IsNullOrEmpty(str))
        {
            Regex r = new Regex(value.ToUpper());
                if (r.IsMatch(str.ToUpper()))
                    return true;

        }

        return false;
    }
}

}

此测试的结果将是真实的。

1 个答案:

答案 0 :(得分:3)

这样做的方法是使用Regex。语法与SQL LIKE查询不同,因此会有一些学习曲线。 This is a good tutorial site我经常提到,它可以让你从基础开始。

翻译您询问的原始字符串,正则表达式搜索模式将是

.*This.*is.*my.*string.*

一旦你擅长这一点,就可以进行像I helped create for a password complexity checker

这样的搜索
(?=^.{8,}$)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W_])(?=^.*[^\s].*$).*$

上述搜索查找的字符串至少包含8个字符,且至少包含一个小写字母,一个大写字母,一个特殊字符和无空白字符。