【问题标题】:ServiceStack OrmLite "Like" LinqServiceStack OrmLite“喜欢”Linq
【发布时间】:2020-02-17 12:34:36
【问题描述】:

在我的数据库中,我有一个名为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",查询也会返回组为 "caterpillar" 的记录。 SQL Expression 会排除这种情况。有没有直接在 C# 代码中解决这个问题的巧妙方法?

【问题讨论】:

标签: c# sql linq orm servicestack


【解决方案1】:

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

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

OrmLite 文档包含更多 OrmLite Example queries

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2022-01-18
    相关资源
    最近更新 更多