ServiceStack OrmLite "Мне нравится" Linq - PullRequest
2 голосов
/ 17 февраля 2020

В моей базе данных есть поле string(max) с именем GROUPS, где я храню группы для своей записи, разделенные точкой с запятой ;. Я использую 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 группы "дом; гусеница" . SQL Выражение исключило бы такого рода ситуации. Есть ли какое-нибудь умное решение этой проблемы непосредственно в C# коде?

1 Ответ

2 голосов
/ 17 февраля 2020

Звучит так, как будто вы хотите использовать .EndsWith(), например:

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

Документы OrmLite содержат больше Примеров запросов OrmLite .

...