public ResultHandler <IEnumerable <Expression <Func <EventModel, bool> > > > BuildExpressions(IEnumerable <FilterStatement <EventModel> > filterStatements) { try { List <Expression <Func <EventModel, bool> > > result = new List <Expression <Func <EventModel, bool> > >(); foreach (var filterStatement in filterStatements) { IFilter <EventModel> filter = this._eventFilterResolver(filterStatement.FilterType); ResultHandler <Expression <Func <EventModel, bool> > > expressionResult = filter.BuildExpression(filterStatement); if (!expressionResult.Success) { this._logger.LogError(expressionResult.ErrorMessage); return(ResultHandler.Fail <IEnumerable <Expression <Func <EventModel, bool> > > >(expressionResult.ErrorCode)); } result.Add(expressionResult.Value); } return(ResultHandler.Ok <IEnumerable <Expression <Func <EventModel, bool> > > >(result)); } catch (Exception ex) { return(ResultHandler.Fail <IEnumerable <Expression <Func <EventModel, bool> > > >(ex)); } }