В моей базе данных есть поле 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# коде?