Как хранить заготовленный C# Dictionary?

238
23 октября 2017, 22:56

У меня есть около десяти тысяч строчек в таблице следующего формата:

id может быть буквенное.

Нужно в программе на C# уметь сопоставлять для id соответствующую ему group.

Для этого я хочу создать dictionary и по ключу id доставать значение group (как value). Но данных у меня очень много (порядка 10 тысяч строчек). Поэтому два вопроса:

  1. Насколько эффективен такой подход? Использование словаря. Может есть что-то удобнее?
  2. Если все-таки использовать словарь, как его заранее подключить к программе? Внешним классом?

Спасибо!

Answer 1

Вот есть интересная статья по поводу работы колекций из стандартной библиотеки.

Самый очевидный конкурент Dictionary - Hashtable.

Можно выделить, что Dictionary хорошо работает с вставкой элементов при большом размере самой колекции. При этом, Hashtable хорош при поиске элементов.

В целом, использование словаря - оптимальный вариант.

Так же в интернете полно примеров подключения c# к excel. Вот, например:

string con =
  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" + 
  @"Extended Properties='Excel 8.0;HDR=Yes;'";    
using(OleDbConnection connection = new OleDbConnection(con))
{
    connection.Open();
    OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection); 
    using(OleDbDataReader dr = command.ExecuteReader())
    {
         while(dr.Read())
         {
             var row1Col0 = dr[0];
             Console.WriteLine(row1Col0);
         }
    }
}
Answer 2
  1. Да, использование словаря наиболее удобно. Словарь и есть «материализованное» отображение одного множества на другое. Более эффективным может быть просто массив, если ваши ключи — последовательные целые числа.

  2. Как угодно.

    • Если данных мало, то обычно проще всего задать литерал вида var dict = new Dictionary<int, string>() { [1] = "one", [2] = "two" };. Вы можете пойти этим путём, но файл с исходником вам, вероятно, придётся сгенерировать одноразовым скриптом.
    • Другой вариант — данные в сериализованном виде (например, XML или JSON, или хотя вы CSV) в файл, и распарсить их при старте программы. Файл, вероятно, лучше положить в ресурсы:

READ ALSO
Поиск по объектам JavaScript

Поиск по объектам JavaScript

Здравствуйте, помогите пожалуйста решить мою задачуУ меня есть три таблицы в базе данных: Материк, Страна, Город

399
Раскрывающийся pie chart d3.js

Раскрывающийся pie chart d3.js

Раскрывать элемент диаграммы по которому кликнулиНа входе такой массив, где child - это это те элементы, которые надо раскрыть

317
Поддержка подсветки и синтаксиса JSX

Поддержка подсветки и синтаксиса JSX

Изучаю библиотеку React и использую Brackets

226
Проблема с heic форматом

Проблема с heic форматом

Проблема при конвертации heic в jpgИспользую официальную библиотеку на js

276