Как сделать удаление строк из таблицы данных более эффективным в Uipath

#optimization #datatable #uipath

Вопрос:

Привет, у меня есть таблица данных, которая загружается текстовым файлом с именами файлов, которые у меня уже есть. (Файл с данными)

У меня также есть таблица данных со всеми именами файлов. (Значение DatatableValue)

Я хочу удалить имена файлов, которые существуют в файле DatatableFile, из значения DatatableValue, чтобы я мог сделать следующий шаг.

Я сделал это, но это оооочень медленно.

И все примеры, которые я нашел, такие большие и сложные. Я думаю, что есть более простое решение, чем то, которое я нашел, и более быстрое, чем мое.

Мое решение повторяет все результаты, которые находятся в файле данных, в каждой строке, которая находится в значении datatableValue, и это становится все больше и больше. И когда есть совпадение, он берет этот номер строки и сохраняет его в массиве для последующего процесса.

И после того, как он проверил две таблицы, он начинает очищать файлы, которые у него уже есть.

введите описание изображения здесь введите описание изображения здесь

Ответ №1:

Это может быть достигнуто с помощью операторов LINQ и манипулирования таблицами данных.

Сначала давайте получим список файлов, которые у вас уже есть, это можно сделать с помощью назначения.

lstStrCurrentFiles = DatatableFile.AsEnumerable().Select(Function (r) r(0).ToString).ToList()

Теперь давайте исключим их из таблицы данных всех имеющихся у вас файлов, опять же, это можно сделать с помощью назначения.

DatatableValue = DatatableValue.AsEnumerable.Where(Function (dr) not lstStrCurrentFiles.Contains(dr(1).ToString)).CopyToDataTable

Это дает вам следующую последовательность

Последовательность с 2 назначениями в

Комментарии:

1. я сделал это сейчас, и это так хорошо работает. Я так благодарен вам за помощь

2. Это брилл, за последние несколько лет я обнаружил, что использование LINQ часто намного эффективнее, чем использование циклов для управления таблицами данных. Рад, что у тебя все получилось.