这种说法有可能吗?

时间:2013-10-02 04:57:16

标签: c# .net

我有以下内容:

var contents = new[]
    {
        "Theme Gallery", "Converted Forms", "Page Output Cache", "Master Page",
        "(no title)", ".css", ".xml", ".wsp", ".jpg", ".png", ".master"
        , ".000" , "Page Output Cache" , "_catalogs", "Style Library", "Cache Profiles"
    };

string fileUrl = siteCollectionEntity.Url + '/' + item.Url;

我想编写一个语句,如果URL包含内容中找到的任何单词,将阻止循环继续。请注意以下不良语法,但我认为这将有助于更好地解释我正在尝试做什么...基本上类似于以下内容:

if (fileUrl.Contains(contents)) continue;

这样的事情可能吗?

3 个答案:

答案 0 :(得分:5)

var contains = contents.Any(i => fileUrl.Contains(i));

说明:

  1. http://msdn.microsoft.com/en-us/library/system.linq.enumerable.any.aspx - .Any()为您提供LINQ方法。

  2. 它的工作原理如下:它接受一个函数引用(在本例中为lambda),它接受一个与集合项相同类型的参数(string在你的情况下,我称之为{{ 1}})并且必须返回一个布尔值。如果某个元素返回i,则整个true将返回true。

  3. 所以基本上它会将.Any()数组的每个项目contents传递到i表达式,直到返回fileUrl.Contains(i)

答案 1 :(得分:1)

尝试使用Exists

  

确定指定的数组是否包含匹配的元素   由指定谓词定义的条件。

这样的东西
if(Array.Exists(contents, s => fileUrl.Contains(s))) continue;

答案 2 :(得分:0)

文件URL不区分大小写。所以我认为你应该这样做:

if (contents.Any(c => fileUrl.IndexOf(c, StringComparison.InvariantCultureIgnoreCase) != -1))
{
    continue;
}