Como recupero itens marcados com todas as tags fornecidas no linq?

Parece que estou tendo problemas com isso. Eu tenho uma tabela de tarefas com um ID e uma tabela de tags, que possui um campo de tags e uma restrição de chave estrangeira para a tabela de tarefas.

Quero poder executar AND procura tarefas por tags. Por exemplo, se eu procurar tarefas com as tags "portabilidade" e "teste", não quero tarefas marcadas com "portabilidade" e não "teste".

Eu tentei a seguinte sintaxe:

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

Obviamente, isso faz uma pesquisa OR, não uma pesquisa AND. Não consigo descobrir como realmente mudar isso para ser uma pesquisa AND.

Editar Também preciso pesquisar 2 das tags X que uma tarefa contém. Portanto, se a tarefa estiver marcada com "bugfix", "portability", "testing" e eu procurar "testing" e "portability", essa tarefa ainda será exibida.

questionAnswers(2)

yourAnswerToTheQuestion