c# - 正则表达式不适用于 Linq to Sql

标签 c# regex linq

我有以下代码

Regex R = new Regex("my regex");
var q = from c in db.tble1
        where R.IsMatch(c.text)
        select c;

在调试时我在 q 结果中看到了这条消息

Method 'Boolean IsMatch(System.String)' has no supported translation to SQL."} System.SystemException {System.NotSupportedException}

那我做错了什么?

编辑:我了解到该方法不支持转换为 SQL
但是如何解决这个问题

最佳答案

Regex 不支持转换为 SQL。错误说明了一切。不能在 LINQ to SQL 中使用正则表达式。

尝试使用likesubstring 比较:

var q = from c in db.tble1
        where c.text.StartsWith("x") && c.text.Substring(2, 1) == "y"
        select c;

或者,您可以执行内存中正则表达式比较。您可以通过在使用 Regex 之前调用 ToList() 来执行此操作:

Regex R = new Regex("my regex");
var q = from c in db.tble1.ToList()
        where R.IsMatch(c.text)
        select c;

关于c# - 正则表达式不适用于 Linq to Sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936705/

相关文章:

c# - 在图片框、窗体上查找碰撞区域

c# - 如何设置常量十进制值

Perl 中 GPA 的正则表达式

javascript - 匹配不以特殊字符开头的行中的换行符

c# - 计算玩家输赢百分比

c# - 如何在新行中用特定元素替换多个 <br/> 标签?

c# - UseJwtBearerAuthentication 失败,IDX10504 : Unable to validate signature, token 没有签名

regex - 如何使用这两个键值对使用 CEF 数据扩展此 RegEx?

c# - 嵌套对象上的条件 Linq 选择

c# - 隐藏/取消隐藏文件效果不佳