NHibernate: QueryOver <> ajuda

Estou começando no NHibernate e estou tendo problemas para executar consultas mais complexas.

Eu tenho entidades com uma lista de tags anexadas. O usuário fornecerá duas listas de tags, incluir e excluir.

Preciso encontrar todas as entidades que possuem todas as tags de inclusão e excluir quaisquer entidades que tenham qualquer tag na lista de exclusão.

Abaixo está o meu primeiro esforço - que é claramente errado, pois lista todos os objetos Display que possuem qualquer uma das tags de inclusão em vez de todas!

Qualquer assistência é muito apreciada.

var includeTagIds = (from tag in regime.IncludeTags select tag.Id).ToList<int>();
var excludeTagIds = from tag in regime.ExcludeTags select tag.Id;


var displays = session.QueryOver<Display>()
                      .JoinQueryOver<DisplayTag>(display => display.Tags)
                      .WhereRestrictionOn(tag => tag.Id)
                      .IsIn(includeTagIds).List().Distinct();


return displays.ToList();

questionAnswers(1)

yourAnswerToTheQuestion