¿Cómo recupero elementos etiquetados con todas las etiquetas suministradas en linq?

Parece que estoy teniendo problemas con esto. Tengo una tabla de tareas con una ID y una tabla de etiquetas, que tiene un campo de etiqueta y una restricción de clave externa para la tabla de tareas.

Quiero poder realizar Y búsquedas de tareas por etiquetas. Entonces, por ejemplo, si busco tareas con las etiquetas "portabilidad" y "prueba", no quiero tareas que estén etiquetadas con "portabilidad" y no "prueba".

Probé la siguiente sintaxis:

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

Por supuesto, esto hace una búsqueda OR, no una búsqueda AND. No puedo entender cómo cambiar esto para que sea una búsqueda AND.

Editar También necesito poder buscar 2 de las X etiquetas que contiene una tarea. Entonces, si la tarea está etiquetada con "corrección de errores", "portabilidad", "prueba" y busco "prueba" y "portabilidad", esa tarea seguirá apareciendo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta