public async Task <DataActionResult <IEnumerable <PingTestData> > > TestConnectionListAsync( IEnumerable <IPAddress> ips ) { IEnumerable <IPAddress> ipAddresses = ips as IPAddress[] ?? ips.ToArray(); int len = ipAddresses.Count(); var results = new DataActionResult <PingTestData> [len]; int index = 0; DataActionResult <PingTestData> firstFailed = null; foreach (var ip in ipAddresses) { results[index] = await TestConnectionAsync(ip); if (results[index].Status.Failure()) { firstFailed = results[index]; break; } index++; } return(firstFailed != null ? DataActionResult <IEnumerable <PingTestData> > .Failed(firstFailed.Status) : DataActionResult <IEnumerable <PingTestData> > .Successful(results.Select(r => r.Result))); }