Лучший способ представить одно и то же значение с помощью нескольких значений (C # 3.0) - PullRequest
1 голос
/ 29 апреля 2010

У меня есть ситуация, для которой я ищу более элегантное решение.

Рассмотрим следующие случаи

"BKP","bkp","book-to-price" (will represent) BOOK-TO-PRICE

"aop","aspect oriented program" (will represent) ASPECT-ORIENTED-PROGRAM

т.е. если пользователь вводит BKP или bkp или book-to-price, программа должна рассматривать это как BOOK-TO-PRICE То же самое относится и ко второму примеру (ASPECT-ORIENTED-PROGRAM).

У меня есть решение ниже:

Решение:

if (str == "BKP" || str == "bkp" || str == "book-to-price" ) return "BOOK-TO-PRICE".

Но я думаю, что может быть много других лучших решений.

Не могли бы вы, люди, дать несколько советов. (С примером будет лучше)

Я использую C # 3.0 и dotnet framework 3.5

1 Ответ

3 голосов
/ 29 апреля 2010

Я хотел бы рассмотреть возможность использования Dictionary<string,string>, возможно, заполненного из файла конфигурации или таблицы базы данных, с псевдонимом для канонических отношений имен.Используйте регистр ключей без учета регистра.Например,

var map = new Dictionary<string,string>( StringComparer.OrdinalIgnoreCase );
map.Add( "bkp", "BOOK-TO-PRICE" );
map.Add( "book-to-price", "BOOK-TO-PRICE" );
map.Add( "aop", "ASPECT-ORIENTED-PROGRAM" );
map.Add( "aspect oriented program", "ASPECT-ORIENTED-PROGRAM" );

Тогда вам нужно только, учитывая, что ключ выполняет O (1) поиск, чтобы найти каноническое имя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...