#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
Это дает вам следующую последовательность
Комментарии:
1. я сделал это сейчас, и это так хорошо работает. Я так благодарен вам за помощь
2. Это брилл, за последние несколько лет я обнаружил, что использование LINQ часто намного эффективнее, чем использование циклов для управления таблицами данных. Рад, что у тебя все получилось.