Асинхронно генерировать и добавлять POCO в ListC#

Место общения программистов C#
Ответить
Anonymous
 Асинхронно генерировать и добавлять POCO в List

Сообщение Anonymous »

Я выполняю запрос, который возвращает примерно 11 000 строк. Каждая из этих строк сопоставлена ​​с уникальным POCO, для создания которого я написал облегченную ORM, называемую ToCustomObject. Прямо сейчас у меня уже есть асинхронный метод, который получает результаты этого запроса и помещает их в DataTable. Затем я просматриваю все строки и вызываю для них ToCustomObject, чтобы сгенерировать свой объект, а затем добавляю его в List. Сам запрос занимает всего полсекунды, но цикл генерации всех моих POCO занимает несколько секунд.

Код: Выделить всё

public async Task GetFoosAsync()
{
//empty list to populate and return
List foos = [];

//example, this is not how the query actually executes, do not need assistance with this part
string query = "select t.Field1, t.Field2 from Table";
DataTable results = await customDbHandlerThatsNotRelevant.ExecuteQueryAsync(query);

//async way to handle this?
foreach (DataRow row in results.Rows)
foos.Add(row.ToCustomObject());

return foos ;
}
Я думал о том, чтобы использовать Task.WhenAll(), чтобы поместить все поколения в список задач и выполнить таким образом, но foos.Add() не ожидается. Я также изучил Parallel.ForEach(), но я не так хорошо с этим знаком и, насколько я могу судить, не смог бы выполнить то, что пытаюсь сделать.
TL;DR: Как я могу сделать так, чтобы все вхождения foos.Add(row.ToCustomObject()); происходили асинхронно?>

Подробнее здесь: https://stackoverflow.com/questions/788 ... o-to-listt
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»