Как записать много значений в switch?

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Например есть на входе много наименований для выбора: Апельсин, ананас, абрикос, чупа-чупс, сладкая вата и тд.
Около 100 наименований. Кладём в var1.
А вторые значения наименований прописаны в латинице: Apels, ananas, ch_chups, sl_vata и тд. - var2

Нужно чтобы при выборе какого-либо наименования уснанавливалось значение var2 на латинице, равнозначное этому наименованию. Кубиком понимаю как это сделать.
А как это реализовать не кубиком а С#, не могу разобраться. А то кубик огроменный получится.
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
331
Благодарностей
243
Баллы
43
C#:
switch ( project.Variables["items"].Value ) {
        
    case "Апельсин": project.Variables["item"].Value = "Apels";
  break;
 case "Ананас": project.Variables["item"].Value = "ananas";
  break;
...
 и т.д.
}
А не проще к входным переменным применять транслит и дальнейшую логику подстроить под это?
 

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
C#:
switch ( project.Variables["items"].Value ) {
       
    case "Апельсин": project.Variables["item"].Value = "Apels";
  break;
case "Ананас": project.Variables["item"].Value = "ananas";
  break;
...
и т.д.
}
А не проще к входным переменным применять транслит и дальнейшую логику подстроить под это?
Да они не совпадают по названиям если транслит, конечно так проще) Апельсин-apels, сладкая вата - sl_vata
В вашем коде одна переменная, тоесть та, в которую мы записываем значение на входе, верно?
 

Alex733

Client
Регистрация
27.11.2017
Сообщения
331
Благодарностей
243
Баллы
43
Верно
 
  • Спасибо
Реакции: shell

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 525
Благодарностей
3 376
Баллы
113
Если списки равны по номерам строк (индексу), то их и лучше использовать.
 
Последнее редактирование:

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Во входных настроках мультиселект со списком на русском. -> разделяем и кладем в список -> с помощью словаря делаем замены и отправляем в список.

C#:
List<string> lst_p = new List<string>(); // лист для списка товаров

// Словарь для замен
Dictionary<string, string> d_p = new Dictionary<string, string> {
    {"Апельсин", "Apels"},
    {"Ананас", "ananas"},
    {"Чупа-чупс", "ch_chups"},
    {"Computers and Accessories", "Computers & Accessories"},
    {"Что заменяем", "На что заменяем"}
};

// Отправляем выбранные значения из входных настроек в список.
project.Variables["Переменная для мультиселекта"].Value.Replace(", ",",").Split(new char[] {','}).ToList().ForEach(e => lst_p.Add(e));

// Перебираем и заменяем по словарю.
foreach (KeyValuePair<string, string> k in d_p) {
    if (lst_p.Contains(k.Key)) {
        lst_p.Remove(k.Key);
        lst_p.Add(k.Value);
    }
}
lst_p.Sort(); // Сортируем список
 
  • Спасибо
Реакции: shell

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 525
Благодарностей
3 376
Баллы
113
{"Апельсин", "Apels"}, {"Ананас", "ananas"}, {"Чупа-чупс", "ch_chups"}, {"Computers and Accessories", "Computers & Accessories"}, {"Что заменяем", "На что заменяем"}
Тут всего 5 строк, а человеку надо больше сотни.

Проще сравнять в списках значения по номерам строк и уже с ними работать.
 

RoyalBank

Client
Регистрация
07.09.2015
Сообщения
557
Благодарностей
550
Баллы
93
Тут всего 5 строк, а человеку надо больше сотни.
Так пусть составит словарь, во входных настройках он будет иметь читаемый для него вид продуктов, а в коде будет использовать любые аналоги, какие только придумает.

Он же сам написал, что вторые значения наименований у него уже прописаны на латинице, что сложного составить словарь из двух списков, делается за пару кликов.
 
  • Спасибо
Реакции: shell

shell

Client
Регистрация
16.05.2016
Сообщения
114
Благодарностей
4
Баллы
18
Да оба решения имеют место быть на самом деле.
В обоих случаях можно с екселем поиграться и получить результат. Я сделал по первому варианту и меня всё устроило.
Спасибо всем откликнувшимся!!!
 

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