3.9 Словари (Dictionary)
12 октября 2022 г.
11:46
Для того, чтобы оставить уникальные значения из коллекции из 2х колонок.
/media/image1.png)
Можно создать 2 словаря, но ключ у них будет пересекаться.
Объявим словари
Dim dictModuleSED As New Dictionary(Of String, String)
Dim dictCategorySED As New Dictionary(Of String, String)
Пробежимся по каждой записи из csv и создадим ключ и поместим запись в оба словаря с одним ключем!
For Each colElement As IEntity In colCCSEDProducts
ModuleSED = colElement.GetValue("CCC_ModuleSED")
CategorySED = colElement.GetValue("CCC_CategorySED")
If not String.IsNullOrEmpty(CategorySED) Then
keyModuleSED_CategorySED = ModuleSED + "_" + CategorySED '(ключ)
If not dictModuleSED.ContainsKey(keyModuleSED_CategorySED) And Not dictCategorySED.ContainsKey(keyModuleSED_CategorySED) Then
dictModuleSED.Add(keyModuleSED_CategorySED,ModuleSED)
dictCategorySED.Add(keyModuleSED_CategorySED,CategorySED)
End If
End If
Next
Потом мы можем перебирая значения одного словаря получать значения из другого словаря по ключу!
For Each pair As KeyValuePair(Of String, String) In dictModuleSED
strQuery = String.Format("Ident_AccProductGroup = N'{0}'", pair.Value)
Session.Source().TryGetSingleValue(Of String)("AccProductGroup","UID_AccProductGroup",strQuery,UID_AccProductGroupSed) 'Получим UID категории модуля СЭД
If Not String.IsNullOrEmpty(UID_AccProductGroupSed) Then
strQuery = String.Format("Ident_AccProductGroup = N'{0}' and UID_AccProductGroupParent = '{1}'", dictCategorySED(pair.Key),UID_AccProductGroupSed)
Session.Source().TryGetSingleValue(Of String)("AccProductGroup","UID_AccProductGroup",strQuery,UID_AccProductGroupSed_Sub) 'Получим UID подкатегории СЭД
If String.IsNullOrEmpty(UID_AccProductGroupSed_Sub) Then 'Если не смогли найти подкатегорию существующую, то создадим ее в ITShop
dbAccProductGroup = Session.Source.CreateNew("AccProductGroup")
dbAccProductGroup.PutValue("Ident_AccProductGroup", dictCategorySED(pair.Key))
dbAccProductGroup.PutValue("UID_AccProductGroupParent", UID_AccProductGroupSed) 'Категория СЭД
dbAccProductGroup.Save(Session)
End If
End If
Next