 <p>this may not be the direct answer, but in such "multiple parameter search" situations i just forget about anything and do the simple thing, for ex: Search By Car Manufacturer, CategoryId, MillageMax, Price :</p> <pre><code>var searchResults = from c in carDb.Cars where (c.Manufacturer.Contains(Manufacturer) || Manufacturer == null) &amp;&amp; (c.CategoryId == CategoryId || CategoryId == null) &amp;&amp; (c.Millage &lt;= MillageMax || MillageMax== null) &amp;&amp; (c.Price &lt;= Price || Price == null) select c </code></pre> <p>now if any of the parameters is <code>null</code> it cancels the containing line by making the whole expression in brackets <code>True</code> and so it does not take a part in search any more</p>