Вы можете динамически построить дерево выражений для условия.
var parameter = Expression.Parameter(typeof(Employee), "employee");
Expression condition = Expression.Constant(false);
foreach (var state in states)
{
condition = Expression.OrElse(
condition,
Expression.Equal(
Expression.Property(parameter, "State"),
Expression.Constant(state)));
}
var expression = Expression.Lambda<Func<Employee, Boolean>>(condition, parameter);
И затем просто выполнить вызов.
var result = Context.Employees.Where(expression);
Я не уверен на 100%, сработает ли этоиз коробки для вас, но я надеюсь, что общая идея помогает.