Registros sobrepostos entre duas datas usando o Linq

No meu aplicativo, um usuário pode delegar outro usuário para aprovar pedidos.

O que eu preciso validar, é que não há referências circulares por isso, seUser A é delegadoUser B durante um certo período,User B não posso delegarUser A para qualquer momento dentro desse período, ou seja, há uma sobreposiçãodd/mm/yyyy):

Delegator    Delegated To    DateFrom    DateTo
User A       User B          01/11/2012  08/11/2012
User A       User B          16/12/2012  24/12/2012

Este é o código que eu tenho que verificar para sobreposições:

var overlaps = .Session.QueryOver<DelegateOrderApproval>()
    .Where(x => x.DateFrom > DateTime.Now && delegateOrderApproval.DelegatedUser.UserId == x.DelegatorUser.UserId)
    .And(x => x.DateFrom >= delegateOrderApproval.DateFrom && delegateOrderApproval.DateTo <= x.DateTo
              || (x.DateFrom >= delegateOrderApproval.DateFrom && x.DateTo <= delegateOrderApproval.DateTo)
              || (x.DateFrom <= delegateOrderApproval.DateFrom && x.DateTo >= delegateOrderApproval.DateFrom)
              || (x.DateFrom <= delegateOrderApproval.DateFrom && x.DateTo >= delegateOrderApproval.DateTo))
    .List();

Se eu tentar adicionar o seguinte registro:

Delegator: User B
Delegated  To: User A
Date From: 15/11/2012
DateTo:    21/11/2012

não deve haver conflito comoUser B não é um delegado paraUser A nesse período de tempo? Está pegando o recorde em dezembro.

Eu pesquisei por código de sobreposição no período e tentei de tudo, mas nada parece funcionar.

Alguma ideia?

questionAnswers(1)

yourAnswerToTheQuestion