Аналог кубика Switch на C#

Artamosa

Client
Регистрация
31.01.2016
Сообщения
59
Благодарностей
4
Баллы
8
Приветствую!
Есть прекрасный кубик под названием Switch и он очень хорош для нескольких вариантов.
Но у меня 11к вариантов для сравнения с переменной. Подскажите, можно ли реализовать аналог Switch на C# для такого количества вариантов и будет ли он эффективным?
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Для 11 тысяч вариантов нужен точно не свич. Свич в данном случае можно заменить на цикл foreach, например.
 

AZANIR

Client
Регистрация
09.06.2014
Сообщения
405
Благодарностей
196
Баллы
43
Для 11 тысяч вариантов нужен точно не свич. Свич в данном случае можно заменить на цикл foreach, например.
а лучше вообще-то массив , если конечно у него не 11к вариантов исполнения , я думаю неверно сформулирована задача.
 

Artamosa

Client
Регистрация
31.01.2016
Сообщения
59
Благодарностей
4
Баллы
8
Например у нас есть имя Олег и массив из 11к вариантов комбинации имен, отчеств, фамилий + возраст:

51344


Нужно получить ячейку B4

Первое, что мне пришло в голову - это положить 11к вариантов в таблицу и просто брать оттуда все строки содержащие текст "Олег", но при таком варианте мы захватим 1,3,4 строку. Можно конечно делить строки на две переменные, после чего первую через кубик If проверять на точное соответствие, но тогда в целом это все будет происходить достаточно долго.

Буду крайне благодарен за кусочек кода, который решит эту проблему.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 694
Баллы
113
Например у нас есть имя Олег и массив из 11к вариантов комбинации имен, отчеств, фамилий + возраст:

Посмотреть вложение 51344

Нужно получить ячейку B4

Первое, что мне пришло в голову - это положить 11к вариантов в таблицу и просто брать оттуда все строки содержащие текст "Олег", но при таком варианте мы захватим 1,3,4 строку. Можно конечно делить строки на две переменные, после чего первую через кубик If проверять на точное соответствие, но тогда в целом это все будет происходить достаточно долго.

Буду крайне благодарен за кусочек кода, который решит эту проблему.
дык на форуме полно снипетов по поиску нужного в массиве. просто 100500 вариантов.
 

Artamosa

Client
Регистрация
31.01.2016
Сообщения
59
Благодарностей
4
Баллы
8

Reysh

Client
Регистрация
02.12.2018
Сообщения
198
Благодарностей
132
Баллы
43
Например у нас есть имя Олег и массив из 11к вариантов комбинации имен, отчеств, фамилий + возраст:

Посмотреть вложение 51344

Нужно получить ячейку B4

Первое, что мне пришло в голову - это положить 11к вариантов в таблицу и просто брать оттуда все строки содержащие текст "Олег", но при таком варианте мы захватим 1,3,4 строку. Можно конечно делить строки на две переменные, после чего первую через кубик If проверять на точное соответствие, но тогда в целом это все будет происходить достаточно долго.

Буду крайне благодарен за кусочек кода, который решит эту проблему.
Из таблицы можно брать строку, которая удовлетворяет регулярному выражению по точному совпадению, нужные ячейки этой строки записываются в переменные

51347
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Например у нас есть имя Олег и массив из 11к вариантов комбинации имен, отчеств, фамилий + возраст:

Посмотреть вложение 51344

Нужно получить ячейку B4

Первое, что мне пришло в голову - это положить 11к вариантов в таблицу и просто брать оттуда все строки содержащие текст "Олег", но при таком варианте мы захватим 1,3,4 строку. Можно конечно делить строки на две переменные, после чего первую через кубик If проверять на точное соответствие, но тогда в целом это все будет происходить достаточно долго.

Буду крайне благодарен за кусочек кода, который решит эту проблему.
1) Искать совпадения по индексу - делаешь двумерный массив из всех данных. Проверяешь точное совпадение.
2) Делаешь словарь из своих данных и тогда:
C#:
Dictionary<string,int> nameage = new Dictionary<string,int>();
nameage.Add("Олег",24);
nameage.Add("Олегуша",22);
nameage.Add("Лысый",46);
nameage.Add("ДенегНетЗовутОлег",33);
int value = 0;

if(nameage.TryGetValue("Олег",out value)) {
    project.SendInfoToLog(value.ToString()); //Возвращает 24, по полному совпадению. Только строки "Олег"
}
 

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