Медленная работа со словарем в C#

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Есть айдишки и расшифровки этих айдишек, нужно расшифровки по айдишкам записывать в список/табличку.
Данных много, предполагаю засунуть это все дело в словарь, но столкнулся с проблемкой.
Словарь получился большей, почти 1000 строк.
Запускаю кубик, думает оооооочень долго (десятки секунд, мне очень важна производительность, надо читать за доли секунды)
Данные забиваю вот так
C#:
Dictionary<int, string> dic_name = new Dictionary<int, string>
{{1,"Расшифровка_1"},{2,"Расшифровка_2"},{3,"Расшифровка_3"},{4,"Расшифровка_4"}};
return dic_name[2];
Айдишки, что циферки, они не по порядку идут, есть области 123,137,139...
Выручайте, как заставить работать зенку быстро
p/s Может знаний не хватает, может есть что-то более быстрое с точки зрения чтения чем словарь что я придумал)))
Спасибо!
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
эмммм... это вот 1000 строк в таком формате вручную вбивается..... однако сила воли есть :-)
сделай обычный список в формате id: DeShifr и обычным кубиком получай строку с содержанием id: и следующим кубиком расплитуй по :
 
  • Спасибо
Реакции: arbplv

Astraport

Client
Регистрация
01.05.2015
Сообщения
4 972
Благодарностей
4 425
Баллы
113

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
эмммм... это вот 1000 строк в таком формате вручную вбивается..... однако сила воли есть :-)
сделай обычный список в формате id: DeShifr и обычным кубиком получай строку с содержанием id: и следующим кубиком расплитуй по :
Не, ручками я не вводил, засунул в ексельку и через сцепить собрал. У меня шаблоны на С#, но логику я понял. Еще вопрос, как думаешь, быстрее список обрабатывать или json? Есть преимущество списка, т.к. мне ща не нравится, что в кубике C# у меня куча места занимают эти словари...
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Строку в JSON и потом json.Parse.
Да, надо потестировать, просто я удивлен что в одном кубике C# есть словарь и читается он так долго... Подскажи, еще плиз, у меня весь код в одном кубике C#, можно ли как-то вынести эти словари, например в другой кубик и ссылаться на него и забирать данные? Или только список или табличка как предложили выше?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
Вариантов куча.
сделать список без привязки к файлу, и заполнить его в начале шаблона. потом использовать.
закинуть в переменную JSON и потом парсить в нужном месте и в нужное время.
можно даже словарь закинуть в контекст и использовать его в любом месте.
что быстрее не знаю.
 
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Вариантов куча.
сделать список без привязки к файлу, и заполнить его в начале шаблона. потом использовать.
закинуть в переменную JSON и потом парсить в нужном месте и в нужное время.
можно даже словарь закинуть в контекст и использовать его в любом месте.
что быстрее не знаю.
Спасибо. Пожалуй самые длинные сделаю в список(если получится), а коротенькие через json. Поясни плиз, метод который может вернуть номер строки, ты выше писал "обычным кубиком получай строку с содержанием id: ", контейн я могу получить есть ли "id:" в списке или нет, indexOf может выдать номер строки зная полное название, а не начало. Перебирать циклом это еще дольше будет) Как можно понять номер строки зная только начало?
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
Спасибо. Пожалуй самые длинные сделаю в список(если получится), а коротенькие через json. Поясни плиз, метод который может вернуть номер строки, ты выше писал "обычным кубиком получай строку с содержанием id: ", контейн я могу получить есть ли "id:" в списке или нет, indexOf может выдать номер строки зная полное название, а не начало. Перебирать циклом это еще дольше будет) Как можно понять номер строки зная только начало?
давай четкость внесем. на C# надо или на кубиках ?
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 712
Баллы
113
71340

C#:
string id = "333111";
IZennoList List = project.Lists["instList"];
    for (int j = 0; j < List.Count; j++)
    {
        string str1 = List[j];
        if (str1.Contains(id)) {
            return str1.Split(':')[1];
        }
    }
return -1;
если не найдет, то вернет -1
может кто и на linq сделает, я вот только циклас
 
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Посмотреть вложение 71340

C#:
string id = "333111";
IZennoList List = project.Lists["instList"];
    for (int j = 0; j < List.Count; j++)
    {
        string str1 = List[j];
        if (str1.Contains(id)) {
            return str1.Split(':')[1];
        }
    }
return -1;
если не найдет, то вернет -1
может кто и на linq сделает, я вот только циклас
Спасибо) цикл я тоже умею))) хотелось бы без перебора)
 

Alexmd

Client
Регистрация
10.12.2018
Сообщения
1 022
Благодарностей
1 421
Баллы
113
C#:
string id = "";
return list.Where(x=>x.Contains(id)).FirstOrDefault().Split(':')[1];
 
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
  • Спасибо
Реакции: Alexmd

Кто просматривает тему: (Всего: 4, Пользователи: 0, Гости: 4)