Dynamically evaluating string conditions in C#
Although you don't want to use external libraries, there is one which is just fantastic, and that is PredicateBuilder. Predicate builder allows you to build up a set of predicates to match items against, e.g.:
var predicate = PredicateBuilder.True<string>();
predicate = predicate
.And(p => p.Contains("a"))
.And(p => p.Contains("b"));
var matches = items.Where(predicate);