Dinâmico ou cláusula Linq

Hoje, atualmente, temos uma declaração como esta:

var Query = (from dp in db.Patients
            select dp);

var UserID = User.Identity.GetUserId();

if (User.IsInRole("Administrator"))
{
    Query = Query.Where(x => x.AdministratorID == UserID);
}
if (User.IsInRole("Counselor"))
{
    Query = Query.Where(x => x.CounselorID == UserID);
}
if (User.IsInRole("Physician"))
{
    Query = Query.Where(x => x.PhysicianID == UserID);
}

O problema é que temos usuários que podem ter várias funções. Se um usuário é um conselheiro e um médico, queremos que o sistema recue todos os pacientes em que CounselorID == UserID ou PhysicianID == UserID.

Como isso pode ser feito dinamicamente se não sabemos qual papel o usuário terá quando a página for carregada?

A cláusula .Where atual usa apenas umE declaração precisamos de umOU declaração.

Idealmente, haveria uma solução como esta:

if (User.IsInRole("Administrator"))
{
     Query = Query.Where(x => x.AdministratorID == UserID);
}
if (User.IsInRole("Counselor"))
{
     Query = Query.WhereOr(x => x.CounselorID == UserID);
}
if (User.IsInRole("Physician"))
{
     Query = Query.WhereOr(x => x.PhysicianID == UserID);
}

questionAnswers(2)

yourAnswerToTheQuestion