AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
DAX
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.10.2013, 14:31   #41  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Судя по предыдущему сообщению user_ax соответствующие данные из разных таблиц таки нужно обрабатывать как один элемент
Именно так, запутал я и Вас и себя
Старый 24.10.2013, 14:35   #42  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от LeonDerCom Посмотреть сообщение
В таком случае ключик можно уменьшить
listKey = "L#"+list.InternalSp + "#" + list.ItemId;
1.
ключ может быть и контейнером
listKey =[list.InternalSp, list.ItemId, someOther];
избавитесь от строковых операций и лишней работы сборщика мусора, которому приходится прибираться среди строк.


2.
не увлекайтесь map'ами и прочими структурами - они живут в памяти и требуют кучу памяти для большого количества данных.

лучше уж временные таблицы.
За это сообщение автора поблагодарили: user_ax (1).
Старый 24.10.2013, 14:42   #43  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от mazzy Посмотреть сообщение
2.
не увлекайтесь map'ами и прочими структурами - они живут в памяти и требуют кучу памяти для большого количества данных.

лучше уж временные таблицы.

Да, увлёкся, просто прошлые 3 проекта использовал мапы только, понравились

Спасибо за подсказку, вроде придумал как, попробую, надеюсь получиться.
Старый 24.10.2013, 14:45   #44  
LeonDerCom is offline
LeonDerCom
Участник
 
45 / 20 (1) +++
Регистрация: 08.10.2012
Уф... Слияние 2 МАПов и сортировка испортит Вам всю затею в данном случае.
Старый 24.10.2013, 14:46   #45  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Я бы не стал заморачиваться...
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Зачем вам вообще объединённый мап? может быть вам достаточно по разным мапам собрать объединённое множества ключей? а сами данные оставить в разных мапах?
Сделайте один цикл по общему множеству ключей. Внутри цикла выбирайте данные из двух мапов и сравнивайте, обрабатывайте, выводите... что вам там с ними нужно делать...

Цитата:
Сообщение от Player1 Посмотреть сообщение
У map-ов есть есть keyset() и valueset(), а они умеют так:
- set union (set1, set2) - возвращает объединение двух указанных множеств, то есть множество содержит значения из обоих множеств.
Старый 24.10.2013, 14:47   #46  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение

Зачем вам вообще объединённый мап? может быть вам достаточно по разным мапам собрать объединённое множества ключей? а сами данные оставить в разных мапах?

Хорошо, тогда подскажите, кк сделать тогда объединённое моженство ключей, а данные оставить ?
По ключу ходить в цикле итератором я так понял, а внутри как данные из мапов выбирать?
Старый 24.10.2013, 14:55   #47  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,427 / 1771 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Лучше не итератором, а энумератором.
X++:
    setEnumerator s;
    Set unionKey;
    Map map1, map2;
    
    unionKey = set::union(map1.keySet(), map2.keySet());
    s = unionKey.getEnumerator();
    
    while (s.moveNext())
    {
        if (map1.exists(s.current()))
        {
            map1.lookup(s.current());
        }
        if (map2.exists(s.current()))
        {
            map2.lookup(s.current());
        }
    }

Последний раз редактировалось S.Kuskov; 24.10.2013 в 14:57.
За это сообщение автора поблагодарили: mazzy (2), user_ax (1).
Старый 24.10.2013, 14:55   #48  
LeonDerCom is offline
LeonDerCom
Участник
 
45 / 20 (1) +++
Регистрация: 08.10.2012
S.Kuskov
Пропустил эту подсказку. Спасибо.
Старый 24.10.2013, 15:00   #49  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Лучше не итератором, а энумератором.
X++:
    setEnumerator s;
    Set unionKey;
    Map map1, map2;
    
    unionKey = set::union(map1.keySet(), map2.keySet());
    s = unionKey.getEnumerator();
    
    while (s.moveNext())
    {
        if (map1.exists(s.current()))
        {
            map1.lookup(s.current());
        }
        if (map2.exists(s.current()))
        {
            map2.lookup(s.current());
        }
    }
Спасибо большое за пример, сейчас попробую применить его к своему коду!
Старый 24.10.2013, 15:13   #50  
user_ax is offline
user_ax
Участник
Аватар для user_ax
 
599 / 39 (3) +++
Регистрация: 07.10.2012
Адрес: ZP
Не знал, что можно применять сразу и множества и мапы...
Работает так, как нужно! Спасибо всем за потраченое время и непосильную помощь!
Раздал "+"

Последний раз редактировалось user_ax; 24.10.2013 в 15:16.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Помещение временной таблицы в Map Lemming DAX: Программирование 20 19.10.2017 14:16
Dynamics AX: Map Object Sorting - a real issue Blog bot DAX Blogs 7 15.10.2008 12:02
MAP vs Class. В чем идейная необходимость в MAP-ах? А что если использовать Class вместо MAP? Hub DAX: Программирование 16 11.08.2008 16:58
Открытие контейнера из Map tolstjak DAX: Программирование 12 12.11.2006 18:01
Пропадение связи в Map 6apcyk DAX: Программирование 1 08.06.2006 08:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:28.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.