I currently have a an ASP.Net Website. This website retrieves RSS-Feeds from different Sources and outputs its own RSS-Feed
. But is the article contains some word they must be 'blacked out' (Censorship as you might say). The words are contained in a blacklist
managed by that ASP.Net Website.
My current solution:
foreach (SyndicationItem rssItem in syndFeed.Items.OrderByDescending(x => x.PublishDate).ToList())
{
//if is on blacklist
bool isValid = true;
foreach (String blacklistItem in MyBlacklist)
{
if(rssItem.Title.Text.contains(blacklistItem))
isValid = false;
if(rssItem.Summary.Text.contains(blacklistItem))
isValid = false;
}
if (isValid)
{
writer.WriteStartElement("item");
//Write Elements
writer.WriteElementString("PubDate", rssItem.PublishDate.ToString("yyyy-MM-dd HH:mm:ss"));
writer.WriteElementString("title", rssItem.Title.Text);
writer.WriteElementString("description", rssItem.Summary.Text);
writer.WriteElementString("link", rssItem.Id.ToString());
writer.WriteEndElement();
}
}
Question: Is there a more performant way to do this search? How can i write the following code more simple using LINQ/ Any other Stringoperations?
foreach (String blacklistItem in MyBlacklist)
{
if(rssItem.Title.Text.contains(blacklistItem))
isValid = false;
if(rssItem.Summary.Text.contains(blacklistItem))
isValid = false;
}
Based on the following examples from Java:
Checking if a string contains any of the strings in an array