var managementCount = from tbdocheader in context.tblDocumentHeaders
join tbDocRevision in context.tblDocumentRevisions
on tbdocheader.DocumentHeaderID equals tbDocRevision.DocumentHeaderID
select new { tbdocheader, tbDocRevision };
var query =(from obj in managementCount.AsEnumerable()
where Regex.IsMatch(obj.tbDocRevision.Revision, @"[A-Za-z]%")
select obj).Count();
我正试图得到修订以字母开头的记录计数。"managementCount"查询返回"Revision=A"的记录,但是我的查询没有返回任何匹配的记录。
是我的正则表达式有问题吗?
试模式"^ [A-Za-z] * $
这里 ^ indicates start of an expression,
$ indicates end of an expression,
[A-Za-z] will allow any alphabet character and
[A-Za-z]* will allow any length of alphabet characters.
在c#代码中,你可以这样写:
@"^[A-Za-z]*$
这里,@符号表示从字面上读取字符串,而不解释控制字符
我希望这将帮助你…!
尝试模式"^[A-Za-z]"
…
var query =(from obj in managementCount.AsEnumerable()
where Regex.IsMatch(obj.tbDocRevision.Revision, @"^[A-Za-z]")
select obj).Count();
我想你正在寻找带有额外参数RegexOptions.IgnoreCase
的模式"^[a-z]"
。
在我看来,你已经习惯了SQL like语法。正则表达式是不同的——它们使用不同的通配符,有更多的匹配能力,默认情况下在一个字符串中匹配多次,而且也很难正确匹配。SQL LIKE模式总是隐式地锚定在末尾,而正则表达式不是。
所以上面的模式意味着,匹配从字符串^
开始,然后后面跟着一个字母。不需要添加通配符,因为默认情况下regex不锚定。