Конвертировать основной запрос EF в raw SQL - PullRequest
0 голосов
/ 09 апреля 2020

Из-за ограничений EF Core 3.x мне нужно преобразовать запрос LINQ в raw SQL.

Таблица выглядит так:

Id    Name      TagList
----------------------------
1    Line1      1;5;8
2    Line2      1;4
3    Line3      5
4    Line4      3;2;8
5    Line5
6    Line6      4     

Мне нужно получить строки который соответствует предоставленному списку тегов, имеет параметр: давайте назовем его tagSearch. EF-запрос, который я использовал с EF Core 2.x, имеет метод Any () и Contains ():

var result= _myRepository.Where(a => a.TagList.Any(t => tagSearch.Contains(t)))

, если tagSearch - это List<string>, который содержит следующие элементы: 1 | 2

Результат:

Id    Name      TagList
----------------------------
1    Line1      1;5;8
2    Line2      1;4
4    Line4      3;2;8

Я пробовал несколько SQL запросов со STRING_SPLIT, и самый близкий:

DECLARE @tagSearch NVARCHAR(400) = '1;2'  
SELECT *  
FROM MyTable
WHERE ( @tagSearch = SOME (SELECT value FROM STRING_SPLIT(TagList, ';')) 
        or TagList = SOME (SELECT value FROM STRING_SPLIT(@tagSearch, ';'))
)

Но результат не ожидаемый.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...