ServiceStack OrmLite "Like" Linq
ServiceStack OrmLite "Like" Linq
在我的数据库中,我有一个名为 GROUPS
的字段 string(max)
,我在其中存储用分号 ;
分隔的记录组。我使用 Service Stack ORM Lite
和 Linq
来获取已分配给选定组的记录。使用 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。
在我的数据库中,我有一个名为 GROUPS
的字段 string(max)
,我在其中存储用分号 ;
分隔的记录组。我使用 Service Stack ORM Lite
和 Linq
来获取已分配给选定组的记录。使用 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。