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

Tah*_*qui 7 .net c# regex linq entity-framework

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

    "FilterA:123,234,34;FilterB:12,23;FilterC:;FilterD:45;"
Run Code Online (Sandbox Code Playgroud)

过滤器由';'分隔 并且每个过滤器的值由','分隔.Filter的名称和值之间有一个':'.

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

Ser*_*kiy 13

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

  • 更改数据库表结构.例如,创建表格Foo_Filter,将您的实体链接到过滤器.然后创建Filters包含过滤器数据的表.
  • 在内存中执行查询并使用Linq to Objects.此选项将很慢,因为您必须从数据库获取所有数据到内存


quj*_*jck 5

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