public class FlightQueryProvider : BaseQueryProvider {
// Pinutme vvoje pedvat objekt typu FlightStatusService 
// v konstruktoru
protected FlightQueryProvider() {}

private FlightStatusService flightStatus;

public FlightQueryProvider(FlightStatusService flightStatus) {
if (flightStatus == null) {
	throw new ArgumentNullException("flightStatus");
}
this.flightStatus = flightStatus;
}

#region BaseQueryProvider abstract methods implementation
public override object Execute(Expression expression) {
FlightQueryParameters parameters = this.Translate(expression);
return flightStatus.FlightSearch(
parameters.Filter,
parameters.MaxFlights);
}

public override IQueryable CreateQuery(Expression expression) {
	return new FlightQuery(this, expression);
}
#endregion BaseQueryProvider abstract methods implementation

public string GetQueryText(Expression expression) {
FlightQueryParameters parameters = this.Translate(expression);
return parameters.ToString();
}

private FlightQueryParameters Translate(Expression expression) {
expression = Evaluator.PartialEval(expression);
return new FlightQueryTranslator().Translate(expression);
}
}
