Я хочу написать запрос LINQ для сравнения двух массивов.Я хочу, чтобы запрос был переведен на следующий запрос:
SELECT id, name
FROM persons
WHERE '{"dance", "acting", "games"}' && (hobbies);
Это условие работает следующим образом:
'{"dance"}' && '{"dance", "acting", "games"}'; -- true
'{"dance","singins"}' && '{"dance", "acting", "games"}'; -- true
'{"singins"}' && '{"dance", "acting", "games"}'; -- false
Я написал этот запрос:
List<string> arr = new List<string>(){ "dance", "acting", "games" };
var query = (from p in _context.Persons
where arr.Any(kw => p.hobbies.Contains(kw))
select new
{
id = p.id,
name = p.name
}).ToList();
Переведенный запрос:
SELECT p."id" AS id, p."name" AS name
FROM dataBase."Persons" AS p
Он может понять, что фильтр работает на сервере.поэтому запрос приносит все данные из БД и фильтруется на сервере.Это вызывает проблемы с производительностью и не проходит нагрузочное тестирование.
Мне нужен запрос, который не только выполнит работу, но и будет переведен на вышеуказанный запрос с помощью & &&.
Есть ли способ в LINQ выполнить этот запрос?
Спасибо