在C#DataTable Select语句之间使用通配符

时间:2016-06-13 18:45:33

标签: c# datatable

我正在尝试在C#DataTable中查找模式。我基本上有我的代码:

long count= table.Select("Col0 LIKE '%AA%ZZ%'").Count();

但是,我收到例外System.Data.EvaluateException: Error in Like operator: the string pattern '%AA%ZZ%' is invalid

我读到通配符只能在C#select语句的开头或结尾使用。还有其他选择吗?

理想情况下,我不想写一个遍历表格每一行的循环。

3 个答案:

答案 0 :(得分:1)

您可以将Linq用于DataSet和正则表达式。

int count = table.AsEnumerable()
    .Where(row =>
    {
        string value = row.Field<string>("Col0");
        return Regex.IsMatch(value, ".*AA.*ZZ.*");
    })
    .Count();

答案 1 :(得分:0)

如果您只对字符串的开始方式(即末尾的%)感兴趣,则可以使用这种方法。假设您需要以下条件:"LIKE 'Code02%'"。为此,您可以使用:

long count = table.Select("Col0 >= 'Code02' AND Col0 < 'Code03'").Count();

此过滤器将返回包含Code02Code020Code02ACCode02ZZZZZZZ等值的行。

答案 2 :(得分:-1)

好你既然解释说AA和ZZ之间可能还有其他东西你正在尝试&#39;%AA%ZZ%&#39; (抛出错误),试试这个:

long count= table.Select("Col0 LIKE 'AA%' AND Col0 LIKE '%ZZ'").Count();

这将选择Col0以&#34; AA&#34;开头的每一行。与&#34; ZZ&#34;结束这意味着介于两者之间的任何事情都不起任何作用。