This works with a local copy of PredicateBuilder (no entityFramework or LinkToSql available at work):
var firstID = ids.First();
predicate.And(x => firstID.Contains(x.id));
foreach (string id in ids.Skip(1))
{
var localID = id; //access to a modified closure otherwise
predicate.Or(x => localID.Contains(x.id));
}