Есть ли способ использовать foreach()
для многократного вызова API с различными параметрами. В настоящее время код выполняет только первый элемент (itemOne), а не остальные элементы. Я хочу вернуть все результаты и затем выйти из функции.
Метод, который вызывает TestExecute (), поступает из контроллера. Я не показал метод контроллера, так как он вызывает только TestLogs. Там не отображаются ошибки. По сути, я хочу провести l oop через все три элемента, чтобы получить itemId и сохранить его в списке. В этом случае он будет вызывать API 3 раза и сохранять результаты, и только тогда я захочу выйти из этой функции.
public class TestLogs
{
private readonly ITest _test;
public TestLogs()
{
_test = new test();
}
private async Task<TestProjectsDto> GetProjectId()
{
var date = new DateTime(2020, 04, 15);
var sapProjectNum = new TestProjectsDto
{
Projects = new List<TestProjectDto>()
};
var list = new List<string>()
{
"itemOne",
"itemTwo",
"itemThree"
};
foreach (var divList in list)
{
var proIds = await _test.GetProjectItem(divList, date);
if (proIds != null)
{
sapProjectNum.Projects.AddRange(proIds.Projects);
}
}
return sapProjectNum;
}
public async Task TestExecute()
{
// Where I call GetProjectId();
var listProjectIds = GetProjectId();
// etc
}
}
}
public class TestService : ITest
{
//etc
public async Task<TestProjectsDto> GetProjectOnSpecificDate(string divisionName, DateTime date)
{
var url = $"{test}/GetProjectOnSpecificDate.xsjs?TYPE=item={item}&Date={date:yyyy-MM-dd}";
var response = await HttpClient.GetAsync(url).ConfigureAwait(false);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsAsync<TestProjectsDto>().ConfigureAwait(false);
return content;
}
return null;
}
}