junção dinâmica no linq 0 c #

   var query = from C in db.clients
    join O in db.orders on c.clientid equals O.clientid
    join P in db.products on O.productid equals P.productid
    select new {C,O};

Eu quero realizar uma pesquisa com base na junção acima. O parâmetro de entrada pode ser

C.ClientID e / ou P.ProductName e / ou P.ProductType e / ou O.ShippingType

Como eu criaria uma cláusula de pesquisa dinâmica?

questionAnswers(2)

yourAnswerToTheQuestion