private void OnPerformSearch(object obj) { var items = new List <IDocumentHistoryItem>(_originalDocumentHistoryItems); if (!string.IsNullOrEmpty(SearchTerm)) { switch (SearchFilters.IndexOf(SelectedSearchFilter)) { case 0: case 5: items.Remove(item => item.RegistrationNumber == null || !item.RegistrationNumber.ToLower().Contains(SearchTerm.ToLower())); break; case 1: items.Remove(item => item.CustomerContact == null || !item.CustomerContact.ToLower().Contains(SearchTerm.ToLower())); break; case 2: items.Remove(item => item.TechnicianName == null || !item.TechnicianName.ToLower().Contains(SearchTerm.ToLower())); break; case 3: items.Remove(item => item.Office == null || !item.Office.ToLower().Contains(SearchTerm.ToLower())); break; case 4: items.Remove(item => item.DocumentType == null || !item.DocumentType.ToLower().Contains(SearchTerm.ToLower())); break; } } if (SelectedDocumentType != Resources.TXT_SELECT_ALL && SelectedDocumentType != Resources.TXT_ANALOGUE_ONLY) { items.Remove(item => item.Type != SelectedDocumentType); } if (SelectedDocumentType == Resources.TXT_ANALOGUE_ONLY) { items.Remove(item => item.Document == null || !(item.Document is TachographDocument) || ((TachographDocument)item.Document).IsDigital); } Documents.Clear(); Documents.AddRange(items); }