private bool Matches2(SearchParameters searchParameters) { foreach (SearchOptions search in searchParameters) { bool lastSearch = (!searchParameters.MatchAll) || searchParameters.IsLast(search); bool found; switch (search.SearchType) { case SearchType.ThemeName: found = MatchName(search); break; case SearchType.ThemeSummary: found = MatchSummary(search); break; case SearchType.ThemeDescription: found = MatchDescription(search); break; case SearchType.ThemeTags: found = MatchTags(search); break; case SearchType.Theme: found = MatchName(search) || MatchSummary(search) || MatchDescription(search) || MatchTags(search); break; case SearchType.PubDate: found = MatchDate(search); break; case SearchType.Metadata: found = MatchMeta(search); break; //FIXME - since this is in a loop, we may load metadata multiple times default: Debug.WriteLine("Invalid Search Condition"); found = false; break; } if (lastSearch && found) return true; if (searchParameters.MatchAll && !found) return false; } return false; }