So for example
Func<Hotel, bool> priceMaxFunc = x => x.Price <= 50;
Func<Hotel, bool> priceMinFunc = x => x.Price >= 20;
then join Funcs into expression
Expression<Func<Hotel, bool>> expression = x => priceMaxFunc(x) && priceMinFunc(x);
and translate to Price lt 50 and Price gt 20