c# - 如何检查字符串是否包含列表/数组中的任何字符串

标签 c# .net linq list contains

我目前有一个 ASP.Net 网站。该网站从不同来源检索 RSS-Feed,并输出自己的 RSS-Feed。但是如果这篇文章包含一些单词,它们必须被“涂黑”(正如你可能会说的审查制度)。这些词包含在该 ASP.Net 网站管理的黑名单中。

我当前的解决方案:

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();
    }
}

问题:是否有更高效的方式来执行此搜索?如何使用 LINQ/任何其他字符串操作更简单地编写以下代码?

    foreach (String blacklistItem in MyBlacklist)
    {
        if(rssItem.Title.Text.contains(blacklistItem))
            isValid = false;
        if(rssItem.Summary.Text.contains(blacklistItem))
            isValid = false;
    }

基于以下 Java 示例:

Checking if a string contains any of the strings in an array

How to check string with array of strings in java?

Test if a string contains any of the strings from an array

最佳答案

bool isValid = !myBlackList.Any(s=> rssItem.Title.Text.contains(s) || rssItem.Summary.Text.Contains(s))

或者

bool isValid = myBlackList.All(s=> !rssItem.Title.Text.Contains(s) && !rssItem.Summary.Text.Contains(s))

关于c# - 如何检查字符串是否包含列表/数组中的任何字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723668/

相关文章:

c# - 如何将 HTMLAttributes 传播到自定义 EditorTemplate?

.net - VB.NET 中的行尾标识符?

c# - 如何在 SharePoint 中读取具有多个值的 LookUp 字段?

asp.net-mvc-3 - 将自定义方法集成到 LINQ to Entities 查询中

c# - Web API发布返回415-不支持的媒体类型

C# If not (this) Or (this) or (this) - 多条件 IF/OR

.net - MVC 4 中带有 MVC 4 Futures 的强类型 ActionLink 的语法是什么?

c# - 扩展方法(如 Take())不适用于 LINQ 查询,有什么原因吗?

c# - Linq 缓慢具体化复杂查询

c# - 带有 2 个文本的按钮,通过 controltemplate 绑定(bind)