2

我有一个使用行过滤器的数据表。这是我需要的匹配类型的示例。我只使用星号。

我正在检查的字符串:“你好,你好吗”

过滤器:“*” - 匹配过滤器:“Hello*” - 匹配过滤器:“Hello” - 无匹配过滤器:“*how*” - 匹配过滤器:“Hello*you” - 匹配过滤器:“H*l*w* r*u" - 匹配

当我尝试使用超过 2 个星号时,我得到一个异常,说“字符串模式无效”。

我应该怎么办?

4

2 回答 2

1

行过滤器不能在字符串中间使用 *。我会改用这样的东西。
用法:

var rows = dt.AsEnumerable()
           .Where(x => x.Field<string>("Name").Like("H*l*w*r*u"));

喜欢的功能:

public static class Extensions
{
    public static bool Like(this string s, string pattern, RegexOptions options = RegexOptions.IgnoreCase)
    {
        return Regex.IsMatch(s, pattern, options);
    }
}
于 2012-06-21T16:32:28.223 回答
0

尝试 % 代替通配符过滤器:

System.Data.DataRow[] y = x.Select("Col2 LIKE 'smith[%]%'");
System.Data.DataRow[] y = x.Select("Col2 = 'smith%'");
于 2012-06-21T19:29:07.803 回答