ServiceStack OrmLite“喜欢”Linq
Posted
技术标签:
【中文标题】ServiceStack OrmLite“喜欢”Linq【英文标题】:ServiceStack OrmLite "Like" Linq 【发布时间】:2020-02-17 12:34:36 【问题描述】:在我的数据库中,我有一个名为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",查询也会返回组为 "caterpillar" 的记录。 SQL
Expression 会排除这种情况。有没有直接在 C# 代码中解决这个问题的巧妙方法?
【问题讨论】:
那个 WHERE 不是有效的 SQL。 你说得对,我之前忘记提交了,谢谢。已编辑 你可以像这样使用Sql.In
***.com/a/60108922/2946329
【参考方案1】:
听起来你想改用.EndsWith()
,例如:
q.Where(x => x.Groups.EndsWith(";cat;"))
OrmLite 文档包含更多 OrmLite Example queries。
【讨论】:
以上是关于ServiceStack OrmLite“喜欢”Linq的主要内容,如果未能解决你的问题,请参考以下文章
ServiceStack Webhook + ServiceStack.Webhooks.OrmLite 订阅商店插件问题
使用 ServiceStack.ORMLite 的存储库模式中的事务
如何修改 ServiceStack.OrmLite 生成的 SQL?
ServiceStack OrmLite 连接Sqlserver数据库