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

在C#DataTable Select语句之间使用通配符,c#,datatable,C#,Datatable,我试图在C#数据表中寻找一种模式。我的代码基本上如下所示: long count= table.Select("Col0 LIKE '%AA%ZZ%'").Count(); 但是,我在Like运算符中得到一个异常System.Data.EvaluateException:Error:字符串模式“%AA%ZZ%”无效 我读到通配符只能在C#select语句的开头或结尾使用。还有别的选择吗 理想情况下,我不想自己编写一个遍历表中每一行的循环。好的,既然您解释了AA和ZZ之间可能有其他内容,您正在尝

我试图在C#数据表中寻找一种模式。我的代码基本上如下所示:

long count= table.Select("Col0 LIKE '%AA%ZZ%'").Count();
但是,我在Like运算符中得到一个异常
System.Data.EvaluateException:Error:字符串模式“%AA%ZZ%”无效

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


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

好的,既然您解释了AA和ZZ之间可能有其他内容,您正在尝试“%AA%ZZ%”(这会引发错误),请尝试以下操作:

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

这将选择Col0以“AA”开头并以“ZZ”结尾的每一行,这意味着两者之间的任何内容都不起任何作用。

好的,因为您解释了AA和ZZ之间可能有其他内容,您正在尝试“%AA%ZZ%”(这会引发错误),请尝试以下操作:

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

这将选择Col0以“AA”开头并以“ZZ”结尾的每一行,这意味着两者之间的任何内容都不起任何作用。

您可以使用Linq来创建数据集和正则表达式

int count = table.AsEnumerable()
    .Where(row =>
    {
        string value = row.Field<string>("Col0");
        return Regex.IsMatch(value, ".*AA.*ZZ.*");
    })
    .Count();
int count=table.AsEnumerable()
。其中(行=>
{
字符串值=行字段(“Col0”);
返回Regex.IsMatch(值,*AA.*ZZ.*);
})
.Count();

您可以使用Linq来创建数据集和正则表达式

int count = table.AsEnumerable()
    .Where(row =>
    {
        string value = row.Field<string>("Col0");
        return Regex.IsMatch(value, ".*AA.*ZZ.*");
    })
    .Count();
int count=table.AsEnumerable()
。其中(行=>
{
字符串值=行字段(“Col0”);
返回Regex.IsMatch(值,*AA.*ZZ.*);
})
.Count();

如果您只对字符串的开头感兴趣(即末尾的
%
),可以使用这种方法。假设您想要此条件:
“类似于'Code02%'”
。为此,您可以使用:

long count = table.Select("Col0 >= 'Code02' AND Col0 < 'Code03'").Count();
long count=表格。选择(“Col0>='Code02'和Col0<'Code03')。count();

此筛选器将返回值为
Code02
Code020
Code02AC
code02zzzzz
等的行。

如果您只对字符串的开头感兴趣(即末尾的
%
),则可以使用此方法。假设您想要此条件:
“类似于'Code02%'”
。为此,您可以使用:

long count = table.Select("Col0 >= 'Code02' AND Col0 < 'Code03'").Count();
long count=表格。选择(“Col0>='Code02'和Col0<'Code03')。count();

此筛选器将返回具有以下值的行:
Code02
Code020
Code02AC
code02zzz
,等等。

检查我在这个问题上的答案。在线上有很多例子,以及如何使用
DataTable的
C#Stackoverflow
。选择
方法和通配符,你传递的
通配符太多了%
通配符。你说的“%AA%ZZ%”是什么意思?为什么额外的%被放在中间?@MethodMan想引用一些链接吗?@MukeshAdhvaryu:我需要一个%在中间,因为AA和ZZ之间可能有其他东西。检查我在这个问题上的答案。关于如何使用
数据表,在线上有很多例子,还有
C#Stackoverflow
。选择
方法以及通配符卡您传递的%%太多了。
通配符。'%AA%ZZ%'是什么意思?为什么要把额外的%放在中间?@MethodMan想引用一些链接吗?@MukeshAdhvaryu:我需要一个%在中间,因为AA和ZZ之间可能还有其他东西。