public IEnumerable<CmsTitle> SearchDocuments(IEnumerable<SearchCriteria> searchCriteriaSet) { var query = from e in _sqlCmsDbContext.Entities where e.Type == SqlCmsDocumentService.ENTITY_TYPE select e; var predicate = PredicateBuilder.False<Entity>(); foreach (var searchCriteria in searchCriteriaSet) { var searchCriteriaItem = searchCriteria; switch (searchCriteria.Field) { case CmsDocumentField.Id: predicate = (searchCriteriaItem.IsRequired) ? predicate.And(e => e.Id == Guid.Parse(searchCriteriaItem.QueryText)) : predicate.Or(e => e.Id == Guid.Parse(searchCriteriaItem.QueryText)); break; case CmsDocumentField.Tag: predicate = (searchCriteriaItem.IsRequired) ? predicate.And( e => e.EntityTags.Any( et => et.Tag.TagValue.Equals(searchCriteriaItem.QueryText, StringComparison.InvariantCultureIgnoreCase))) : predicate.Or( e => e.EntityTags.Any( et => et.Tag.TagValue.Equals(searchCriteriaItem.QueryText, StringComparison.InvariantCultureIgnoreCase))); break; case CmsDocumentField.Title: predicate = (searchCriteriaItem.IsRequired) ? predicate.And(e => e.Title.ToLower().Contains(searchCriteriaItem.QueryText.ToLower())) : predicate.Or(e => e.Title.ToLower().Contains(searchCriteriaItem.QueryText.ToLower())); break; case CmsDocumentField.Value: predicate = (searchCriteriaItem.IsRequired) ? predicate.And(e => e.Contents.ToLower().Contains(searchCriteriaItem.QueryText.ToLower())) : predicate.Or(e => e.Contents.ToLower().Contains(searchCriteriaItem.QueryText.ToLower())); break; } } query = query.AsExpandable().Where(predicate); var matchingEntities = query.ToList(); foreach (var entityEntity in matchingEntities) { var title = new CmsTitle(entityEntity.Id, entityEntity.Title); yield return title; } }
public IEnumerable<CmsTitle> GetAll() { using (var reader = DirectoryReader.Open(_Directory, true)) { for (int i = 0; i < reader.MaxDoc; i++) { if (reader.IsDeleted(i)) continue; CmsTitle title = null; try { var doc = reader.Document(i); title = new CmsTitle(Guid.Parse(doc.Get(CmsDocumentField.Id.ToString())), doc.Get(CmsDocumentField.Title.ToString())); } catch (Exception) { } if (title != null) yield return title; } } }