Search and filter in MVC3 Razor using Linq
Just put if, not else if so you can have a cumulative multi criteria search, and one condition in every if.

So every condition is easy to read, and if more than one criteria is filled, they will cumulate fine.

if (!String.IsNullOrWhiteSpace(searchString))
   books = books.Where(b =&gt; b.Name.ToUpper().Contains(searchString.ToUpper());       

if (!String.IsNullOrWhiteSpace(searchGender))
   books = books.Where(b =&gt; b.Gender == searchGender);

if (String.IsNullOrWhiteSpace(searchHand))
   books = books.Where(b =&gt; b.Handedness == searchHand);