我有以下内容:
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;
这样的事情可能吗?
答案 0 :(得分:5)
var contains = contents.Any(i => fileUrl.Contains(i));
说明:
http://msdn.microsoft.com/en-us/library/system.linq.enumerable.any.aspx - .Any()
为您提供LINQ
方法。
它的工作原理如下:它接受一个函数引用(在本例中为lambda),它接受一个与集合项相同类型的参数(string
在你的情况下,我称之为{{ 1}})并且必须返回一个布尔值。如果某个元素返回i
,则整个true
将返回true。
所以基本上它会将.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;
}