public JsonResult SearchForItems(string searchString, SearchForItemsMethodGroup methodGroup) { var validationResult = methodGroup.SearchTextIsValid(searchString); var searchResult = When<MethodResult<IList<SearchForItemsResult>>> .True(validationResult.Success) .Then(() => new WithSession(methodGroup.SessionMethod) .ReturnResult(session => new MethodResult<IList<SearchForItemsResult>>().SetValue(methodGroup.SearchQueryMethod(searchString, session)))) .Else(() => new MethodResult<IList<SearchForItemsResult>>(validationResult.Messages, new List<SearchForItemsResult>())); return new JsonResult { Data = new SimpleResult<IList<SearchForItemsResult>>(searchResult) }; }