Cláusula where dinâmica no Linq to Entities

Estou usando linq para entidades (EF). Eu tenho um construtor que leva 4 parâmetros de seqüência de caracteres. Dependendo do parâmetro que não é nulo, tenho que criar a consulta linq. Eu posso fazer com as instruções if else, mas também tenho outro construtor com 10 parâmetros; nesse caso, haverá muitas combinações para verifica

Exemplo

Constructor(p1,p2,p3,p4)
{
  var prod= from p in ctxt.products.expand("items\details")
            where p.x==p1 && p.xx==p2 && p.xxx==p3 && p.xxxx==p4
            select p;
}

Na cláusula where acima, deve haver verificações de condição apenas se o parâmetro não for nulo. ou seja, se p2 for nulo, a cláusula where deve se parecer com

where p.x==p1 && p.xxx==p3 && p.xxxx==p4

se p2 e p3 forem nulos então

where p.x==p1 && p.xxxx==p4

Alguém pode me dizer como lidar com isso. se possível, você pode dar um exemplo de código para este

questionAnswers(6)

yourAnswerToTheQuestion