private void ExecuteFilter() { lock (gawd) { IEnumerable <DBObjectViewModel> filteredList; if (string.IsNullOrWhiteSpace(ResultsFilter)) { // if there's no filter, just use the plain ol' list filteredList = actualList; } else { var pred = DBObjectSearch.BuildPredicateFromSearchText(ResultsFilter); filteredList = from item in actualList where pred.Invoke(item) select item; } foreach (var found in filteredList) { DatabaseObjects.Add(found); } Execute.OnUIThread(() => { DatabaseObjects.Clear(); DatabaseObjects.AddRange(filteredList); }); } }