public void ExecuteSearch() { if (PageNumber < 1) { PageNumber = 1; } else if (PageNumber > MaxPageCount) { PageNumber = MaxPageCount; } var maxResults = MaxPageCount * DefaultResultsPerPage; var headers = NoteStorage.SearchInPeriod( // ReSharper disable once RedundantArgumentDefaultValue PeriodStart, PeriodEnd, Query, maxResults + 1, SearchableDocumentTime.LastUpdate); if (_deletedNote != null) { headers.Remove(_deletedNote); } else if (headers.Any() && headers.Count > maxResults) { headers.RemoveAt(headers.Count - 1); } TotalPageCount = (int)Math.Ceiling((double)headers.Count / DefaultResultsPerPage); var headersPage = headers .Skip((PageNumber - 1) * DefaultResultsPerPage) .Take(DefaultResultsPerPage) .ToList(); SearchResultPage = headersPage .Select(h => NoteStorage.GetExisting(h.Id)) .Where(x => x != null) .ToList(); if (headersPage.Count > SearchResultPage.Count) { Log.Warn("Fulltext index out of sync: rebuild it"); } }