Как избежать дубликатов в родительской области при отображении поля в карте Biztalk

#c# #xml #xslt #schema #biztalk

#c# #xml #xslt #схема #biztalk

Вопрос:

Моя ситуация такова: поле «Code» из исходного дерева должно быть сопоставлено с полем «Code» в дереве назначения. Поле «Код» в дереве назначения имеет 2 родительских узла. Для проверки схемы назначения один и тот же код не должен встречаться более одного раза в области видимости 2-го родительского узла. Вот изображение иерархии:

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

Таким образом, в рамках «PurchaseInformation» не может встречаться одинаковый «Код». Циклический функтоид зацикливается на «GoodsDescription». Я пытался создать встроенный скрипт C # для обработки этого, но он не учитывает область видимости. Смотрите код ниже:

 public System.Collections.Generic.List<string> duplicateList = new System.Collections.Generic.List<string>();

    public bool IsDuplicate(string code)
    {
         if( duplicateList.Contains(code)) {
            return false;
         } 
         else {
            duplicateList.Add(code);
            return true;
         }
    }
  

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

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

1. Есть ли в PurchaseInformation уникальный элемент, например ReferenceNumber? Затем объедините ReferenceNumber и код в качестве входных данных для вашей функции isDuplicate

2. Поле PurchaseInformation находится в схеме назначения. Извините, если я не прояснил это в своем сообщении. Хотя поля во входной схеме очень похожи. Я посмотрю, является ли одно из них уникальным, и использую это для объединения с кодом.

Ответ №1:

Не видя всего процесса, трудно дать то, что могло бы быть лучшим решением … но…

Вместо того, чтобы пытаться сбросить коллекцию (есть причины, по которым это сложно), вы могли бы попробовать вместо этого список списков.

Предполагая, что SimplifiedInvoice — это идентификатор или что-то в этом роде, вы можете использовать словарь списков, который будет отслеживать списки уникальных значений кода для каждого счета.