ループを 2 回使用したくないforeach
ので、LINQ を使用しようとしましたが、残念ながらこれは機能しません。
return _etags.ToDictionary(item => item.Key, async item => await item.Value);
コードを改善するために何をすべきか、またはどのように変換できDictionary<string, Task<string>>
ますDictionary<string, string>
か?
これが私のコードです:
private static async Task<Dictionary<string, string>> GetETagsAsync(List<string> feedsLink)
{
var eTags = new Dictionary<string, string>(feedsLink.Count);
System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
stopWatch.Start();
var _eTags = new Dictionary<string, Task<string>>(feedsLink.Count);
eTags = new Dictionary<string, string>(feedsLink.Count);
foreach (string feedLink in feedsLink)
{
if (Uri.IsWellFormedUriString(feedLink, UriKind.Absolute))
{
_eTags.Add(feedLink, GetETagAsync(feedLink));
}
else
{
throw new FormatException();
}
}
foreach (KeyValuePair<string, Task<string>> eTag in _eTags)
{
eTags.Add(eTag.Key, await eTag.Value);
}
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
return eTags;
}