Да просто докидывать их к IQueryable:
IQueryable<Person> query = context.Persons;
if (searchByFirstName)
query = query.Where(x => x.FirstName == someFirstName);
if (searchByAge)
query = query.Where(x => x.Age == someAge);
var persons = query.ToList();
При генерации SQL-запроса все эти отдельные условия соберутся в один красивый WHERE.
Другой вариант: собирать Linq Expression'ы. Способ более гибкий, но более сложный. Почитать, скажем, можно тут:
https://msdn.microsoft.com/en-us/library/mt654267.aspx.