Csharp/C#教程:Linq中的Regex(EntityFramework),数据库中的字符串处理分享


Linq中的Regex(EntityFramework),数据库中的字符串处理

我的表中有一列包含值的列

"FilterA:123,234,34;FilterB:12,23;FilterC:;FilterD:45;" 

filter由’;’分隔 并且每个filter的值由’,’分隔。 Filter的名称和值之间有一个’:’。

现在,我可以做任何只能取出值部分的东西吗? 像“FilterA”的“123,234,34”。 或者我可以给它一个像“234”这样的数字来搜索“FilterA”的值部分和/或“FilterB”的值部分中的“54”吗? 我知道使用正则表达式是可能的,我猜,但我不知道怎么做。

您不能在Linq to Entities查询中使用正则表达式,因为它们无法转换为SQL。 你甚至不能使用String.Split来分割你的filter; 。 你有两个选择:

如果您的底层数据库提供程序是SQL Server,那么您可以使用SqlMethods.Like将数据库结果集过滤到可管理的数据子集,然后可以使用RegEx在本地进行分析

为@lazyberezovsky +1,你不能在Linq to Entities中使用正则表达式,因为它无法将其转换为SQL。 您可以将所有记录拉回到内存中然后对其执行Linq to Objects .ToList()对变量执行.ToList()然后对此正则表达式执行第二个linq查询)但这意味着您将每个db记录加载到内存中以处理此查询。 相同的推荐:更改数据库结构,这样您就不需要这样做了。

我想如果你想在数据库服务器上执行所有内容,你需要一个可以解析这些filter的SQL函数,可能会返回一个多列表。 不幸的是,我不在我可以提供任何示例代码的机器上。

上述就是C#学习教程:Linq中的Regex(EntityFramework),数据库中的字符串处理分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/954935.html

(0)
上一篇 2021年11月20日
下一篇 2021年11月20日

精彩推荐