これは私が新しいクラスに持っているメソッドです:
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 を並べ替えるわけではありません。