0

私は次のものを持っています:

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;

このようなことは可能ですか?

4

3 に答える 3

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. 次のように機能します。コレクションアイテムと同じタイプの引数を1つ受け入れる関数参照(この場合はラムダ)を受け入れ(stringあなたの場合はそれを呼び出しましたi)、ブール値を返す必要があります。ある要素がtrue返された場合 - 全体.Any()が true を返します。

したがって、基本的には、contents配列のすべての項目をiそのままfileUrl.Contains(i)式に渡しますtrue

于 2013-10-02T04:59:32.853 に答える
1

Existsを使ってみてください

指定された配列に、指定された述語によって定義された条件に一致する要素が含まれているかどうかを判断します。

何かのようなもの

if(Array.Exists(contents, s => fileUrl.Contains(s))) continue;
于 2013-10-02T05:00:14.173 に答える
0

ファイル URL は大文字と小文字を区別しません。だから私はあなたがすべきだと思う:

if (contents.Any(c => fileUrl.IndexOf(c, StringComparison.InvariantCultureIgnoreCase) != -1))
{
    continue;
}
于 2013-10-02T05:13:07.800 に答える