Как получить элементы, помеченные всеми предоставленными тегами в linq?

Кажется, у меня проблемы с этим. У меня есть таблица задач с идентификатором и таблица тегов, которая имеет поле тега и ограничение внешнего ключа для таблицы задач.

Я хочу иметь возможность выполнять И поиск задач по тегам. Например, если я ищу задачи с тегами «переносимость» и «тестирование», я не хочу, чтобы задачи были помечены как «переносимость», а не «тестирование».

Я попробовал следующий синтаксис:

 var tasks = (from t in _context.KnowledgeBaseTasks
                     where t.KnowledgeBaseTaskTags.Any(x => tags.Contains(x.tag))
                     select KnowledgeBaseTaskViewModel.ConvertFromEntity(t)
                    ).ToList();

Это, конечно, поиск ИЛИ, а не поиск И. Я не могу понять, как на самом деле переключить это на поиск AND.

редактировать Мне также нужно иметь возможность искать 2 из X тегов, содержащихся в задаче. Таким образом, если задача помечена как «bugfix», «portability», «testing» и я ищу «test» и «portability», эта задача все равно будет отображаться.

Ответы на вопрос(2)

Ваш ответ на вопрос