ServiceStack OrmLite "Like" Linq

ServiceStack OrmLite "Like" Linq

在我的数据库中,我有一个名为 GROUPS 的字段 string(max),我在其中存储用分号 ; 分隔的记录组。我使用 Service Stack ORM LiteLinq 来获取已分配给选定组的记录。使用 SQL 我可以在示例中使用 LIKE 查询来实现此目的:

WHERE GROUPS LIKE 'selected_group' OR GROUPS LIKE '%;selected_group' OR GROUPS LIKE '%;selected_group;%' OR GROUPS LIKE 'selected_group;%'

我需要在 C# Linq Query 中做同样的事情,但我遇到了问题。我不知道如何为边缘示例创建查询。如果我使用我的表达式搜索名为 "cat" 的组:

q = q.Where(x => x.Groups.Contains($";cat;") || x.Groups.Contains($";cat")
       || x.Groups.Contains($"cat;") || x.Groups.Equals("cat"));

我会得到有这个组的记录。但如果这些记录有 2 个组 "house;caterpillar",也可以查询 return 组 "caterpillar" 的记录。 SQL表达式会排除这种情况。有直接在 C# 代码中解决这个问题的巧妙方法吗?

听起来您想改用 .EndsWith(),例如:

q.Where(x => x.Groups.EndsWith(";cat;"))

OrmLite 文档包含更多内容OrmLite Example queries