-1

これは私が新しいクラスに持っているメソッドです:

public ExtractImages(List<string> FirstTags, List<string> LastTags, List<string> Maps, string LocalFileDir, string UrlsDir)
        {
            localdir = LocalFileDir;
            counter = 0;
            imagesSatelliteUrls = new List<string>();
            imagesRainUrls = new List<string>();
            int startIndex = 0;
            int endIndex = 0;
            int position = 0;
            for (int i = 0; i < Maps.Count; i++)
            {

                    string startTag = FirstTags[i];
                    string endTag = LastTags[i];
                    startIndex = Maps[i].IndexOf(startTag);
                    while (startIndex > 0)
                    {

                        endIndex = Maps[i].IndexOf(endTag, startIndex);
                        if (endIndex == -1)
                        {
                            break;
                        }
                        string t = Maps[i].Substring(startIndex, endIndex - startIndex + endTag.Length);
                        if (i == 0)
                        {
                            imagesSatelliteUrls.Add(t);
                            counter++;
                        }
                        if (i == 1)
                        {
                            imagesSatelliteUrls.Add(t);
                        }
                        position = endIndex + endTag.Length;
                        startIndex = Maps[i].IndexOf(startTag, position);

                    }
                    if (i >= 0)
                    {
                        imagesSatelliteUrls.Insert(0, "Group 1");
                    }
                    if (i == 1)
                    {
                        imagesSatelliteUrls.Insert(counter, "Group 2");
                    }
                    //imagesSatelliteUrls = imagesSatelliteUrls.OrderBy(q => q).ToList();
            }
        }

最終的に List である imagesSatelliteUrls には、たとえば 70 個のインデックスが含まれます。例えば:

index[0] "Group 1"
index[1] some link here ... http...
index[2] some link here ... http...
.
.
.
index[30] some link here ... http...
.
.
.
.
index[45] "Group 2"
index[46] some link here ... http...
.
.
.
.
index[70] some link here ... http...

変数 Maps には 7 つのインデックスが含まれています。したがって、7回の反復/ループがあります。どういうわけか自動化する必要があるため、次のような新しい文字列が追加されます。「グループ」+ i リンクのグループごとに。

変数カウンターをリセットし続けるか、別の int 変数を使用して if (i == 1 ) でカウントし、次に if (i == 2) でカウントできます。

次に、if ( i == 2) then imagesSatelliteUrls.Insert(newCounter, "Group 2"); を作成します。

しかし、ループごとに新しい IF ステートメントを書く代わりに、どうすればそれをすべて自動化できますか? したがって、各マップの反復/ループで、新しい「グループ」+ i が追加されます

次は、現在使用していない次の行です。

imagesSatelliteUrls = imagesSatelliteUrls.OrderBy(q => q).ToList();

この行を使用すると、すべてのグループがリストの先頭に配置されます。各グループのインデックス (リンク) をソートする必要があります。すべての List imagesSatelliteUrls を並べ替えるわけではありません。

4

1 に答える 1

2

それぞれに各グループを追加したい場合はi、次のようにするととても簡単です:

for (int i = 0; i < Maps.Count; i++) {
  //must place this at the very beginning of your loop
  imagesSatelliteUrls.Add("Group " + (i+1));
  //....
}
于 2013-10-28T19:12:21.290 に答える