public void Filter(string txt) { if (_filtered.Count == 0) { CollectionExtensions.AddRange(_filtered, _clipboardItems); } if (string.IsNullOrWhiteSpace(txt) && _filtered.Count > 0) { _clipboardItems.Clear(); CollectionExtensions.AddRange(_clipboardItems, _filtered); _filtered.Clear(); return; } List <ClipboardItem> items = (from clipboardItem in _clipboardItems let isTextMatched = clipboardItem.Data.Text != null && !clipboardItem.Data.Text.Contains(txt, StringComparison.InvariantCultureIgnoreCase) let isImage = clipboardItem.Data.ClipboardType == ClipboardType.Image where isTextMatched || isImage select clipboardItem).ToList(); _clipboardItems.RemoveRange(items); OnCountChanged(_clipboardItems.Count); }