在foreach中插入到数组中
本文关键字:数组 插入 foreach | 更新日期: 2023-09-27 18:09:58
我有以下代码。我在网站上做一些工作,但有时他们会重定向,如果他们这样做,我想在重定向的网站上做一些工作。但是我不想在做这项工作之前检查所有的重定向网站,因为它们很少。那么我怎么把它插入循环呢?我知道我不能插入字符串数组,但最好的结构是什么?可能是list,因为insert,尽管我不太想保留我们已经处理过的值。我不精通c#。
string[] lines = System.IO.File.ReadAllLines(@"my_file_with_urls.txt");
foreach (string line in lines)
{
Uri default_uri = new Uri(line);
Uri response;
WebSiteIsAvailable(default_uri, out response);
//Do work on the actual link
if (!response.Host.Equals(default_uri.Host)){
//I want to run the work on the redirected website
}
}
var urisToProcess = new HashSet<Uri>(
lines.Where(s => Uri.IsWellFormedUriString(s, UriKind.Absolute)).Select(s => new Uri(s)));
var redirectedUris = new HashSet<Uri>();
foreach (var uri in urisToProcess)
{
Uri response;
WebSiteIsAvailable(uri, out response);
if(response.Equals(uri))
{
// do work on actual URI
continue;
}
while (!response.Equals(uri))
{
uri = response;
WebSiteIsAvailable(uri, out response);
}
if(!urisToProcess.Contains(uri))
{
redirectedUris.Add(uri);
}
}
foreach (var uri in redirectedUris)
{
// do work on redirected URI
}
你可以试试,我还没有完全测试过,但是。
foreach (string line in lines)
{
Uri default_uri = new Uri(line);
Uri response;
WebSiteIsAvailable(default_uri, out response);
while (!response.Host.Equals(default_uri.Host))
{
default_uri = response;
WebSiteIsAvailable(default_uri, out response);
}
//Do work on the actual link as now default_uri contains the working link.
}
不能在foreach中插入数组或列表中的项。而是创建一个for循环,并减少循环的索引。