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



我正在尝试在 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 语句的开头或结尾使用。有没有其他选择?

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

您可以使用 Linq to DataSet 和正则表达式。

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

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

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

此过滤器将返回具有 Code02Code020Code02ACCode02ZZZZZZZ 等值的行。

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

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

这将选择 Col0 以"AA"开头并以"ZZ"结尾的每一行,这意味着介于两者之间的任何内容都不会发挥任何作用。

最新更新