Есть два варианта, которые я могу придумать из головы:
- Простой способ
- Способ кодирования
Простым способом было бы перебрать большую из двух коллекций и использовать Filter Collection
из Utilities - Collection manipulation
в другой коллекции, чтобы увидеть, находится ли строка с теми же значениями, что и в основной коллекции, в другой. коллекция. Этот подход будет работать хорошо, но он потребует ненужного количества этапов, больше времени для сборки и производительность пострадает, если у вас большие коллекции.
Выполнение этого способа кодирования означало бы использование VB.NET или C # и использование команды Except
. Здесь даже есть несколько примеров переполнения стека ( пример ). Недостатком этого решения является то, что требуются некоторые базовые знания .NET. Вам необходимо добавить дополнительные ссылки на DLL (System.Data.DataSetExtensions.dll
и System.Core.dll
) и пространства имен (System.Linq
).
Тогда код C # будет:
colOut = col1.AsEnumerable().Except(col2.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();
... где col1 и col2 - входные коллекции, а colOut - выходная коллекция.
Имейте в виду, что приведенный выше код найдет вам строки из col1, которых нет в col2, чтобы найти строки из col2, которых нет в col1, вам придется либо переключить входы и запустить его снова, либо настроить код еще немного.