public override object Execute() { IEnumerable <TextContent> contents = new TextContent[0]; contents = TextContentQuery.Schema.GetContents(); if (TextContentQuery.Folder != null) { contents = contents.Where(it => it.FolderName.EqualsOrNullEmpty(TextContentQuery.Folder.FullName, StringComparison.CurrentCultureIgnoreCase)); } QueryExpressionTranslator translator = new QueryExpressionTranslator(); var contentQueryable = translator.Translate(TextContentQuery.Expression, contents.AsQueryable()); foreach (var categoryQuery in translator.CategoryQueries) { var categories = (IEnumerable <TextContent>)ContentQueryExecutor.Execute(categoryQuery); var categoryData = TextContentQuery.Repository.GetCategoryData() .Where(it => categories.Any(c => it.CategoryUUID.EqualsOrNullEmpty(c.UUID, StringComparison.CurrentCultureIgnoreCase))); contentQueryable = contentQueryable.Where(it => categoryData.Any(c => it.UUID.EqualsOrNullEmpty(c.ContentUUID, StringComparison.CurrentCultureIgnoreCase))); } return(Execute(contentQueryable, translator.OrderExpressions, translator.CallType, translator.Skip, translator.Take)); }