Найдите что-либо подобное ForEach на DataTable

Я хотел бы использовать новую Параллель. ForEach функционируют, чтобы циклично выполниться через таблицу данных и выполнить действия с каждой строкой. Я пытаюсь преобразовать код ниже:

        foreach(DataRow drow in dt.Rows)
        {
           ...
           Do Stuff
           ...
        }

К этому коду:

        System.Threading.Tasks.Parallel.ForEach(dt.Rows, drow =>
                {
                    ...
                    Do Stuff
                    ...
                });

Когда я выполняю новый код, я получаю ошибку:

Аргументы типа для метода 'Система. Поточная обработка. Задачи. Параллель. ForEach (Система. Наборы. Универсальный. IEnumerable, Система. Действие)', не может быть выведен из использования. Попытайтесь указать аргументы типа явно.

Каков правильный синтаксис для этого?

49
задан SchwartzE 4 August 2010 в 07:25
поделиться

2 ответа

DataTable.Rows возвращает DataRowCollection, который реализует только IEnumerable, а не IEnumerable. Используйте метод расширения AsEnumerable() на DataTable (из DataTableExtensions) вместо этого:

Parallel.ForEach(dt.AsEnumerable(), drow =>
{
    ...
    Do Stuff
    ...
});
105
ответ дан 7 November 2019 в 11:27
поделиться

Parallel.ForEach() ожидает, что первый аргумент будет типа IEnumerable<>. DataTable.Rows таковым не является, но вы можете превратить его в таковой с помощью метода расширения AsEnumerable(). Try:

... Parallel.ForEach(dt.AsEnumerable(), drow => ...
8
ответ дан 7 November 2019 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: