I have the following method that returns an IAsyncEnumerable<T>
:
async IAsyncEnumerable<T> RunReport()
{
var handler = new HttpClientHandler();
var client = new HttpClient(handler);
client.BaseAddress = new Uri("");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var settings = new JsonSerializerSettings();
var jsonFormatter = new JsonMediaTypeFormatter() { SerializerSettings = settings };
var requestMessage = new HttpRequestMessage(HttpMethod.Get, "api/controler");
var response = await client.SendAsync(requestMessage);
response.EnsureSuccessStatusCode();
using (var stream = await response.Content.ReadAsStreamAsync())
{
using (var reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
var linesJson = await reader.ReadLineAsync();
var line = JsonConvert.DeserializeObject<List<T>>(linesJson, jsonFormatter.SerializerSettings);
foreach (var line in lines)
yield return line;
}
}
}
}
I would like to take that result stream it to the database, using SqlBulkCopy
's WriteToServerAsync
method, but cannot figure out how to turn it into an IDataReader
or any other type in the WriteToServerAsync
's overload list.
I'm open to using something other than bulk copy, provided it's reasonably performant.