Я предрежу вопрос, сказав, что я немного новичок в мире .NET и, возможно, упускаю что-то совершенно очевидное.Если это так, я хотел бы услышать, что это такое!
Я часто нахожу себя пишущим небольшую программу, которая все делает более или менее одно и то же:
- Чтение данных из одногоили более файлов
- Сохраните эти данные в памяти, в каком-то контейнере
- Пересмотрите данные, выведите результаты анализа в текстовый файл и выйдите из системы
Я часто нахожуЯ создаю чудовищно выглядящие контейнеры для хранения указанных данных.Например:
Dictionary<DateTime, SortedDictionary<ItemType, List<int>>> allItemTypesAndPropertiesByDate =
new Dictionary<DateTime, SortedDictionary<ItemType, List<int>>>();
Это работает в том смысле, что структура данных более или менее точно описывает мое намерение - я хочу иметь возможность доступа к типам элементов и свойствам по дате.Тем не менее, я чувствую, что контейнер хранения слишком тесно связан с форматом выходных данных (если завтра я решу, что хотел бы найти все даты, в которые были видны элементы с определенными свойствами, эта структура данных становится пассивом).Как правило, внесение изменений на входе и выходе вниз по линии занимает много времени и подвержено ошибкам.Кроме того, я должен продолжать смотреть на эти уродливые объявления - и код для их перебора тоже не из приятных.
На другом конце спектра сложности я могу создать базу данных SQL со схемой, которая описываетвведите в более гибкий формат, а затем выполните запросы (используя SQL или LINQ to SQL) к базе данных.Это, конечно, работает, но кажется слишком большим молотком - я пишу много подобных программ, и не хочу создавать базу данных для каждой, управлять зависимостью SQL (даже если это SQL Express на локальной машине) и т. Д.Мне не нужно на самом деле сохранять данные - просто чтобы прочитать их, сохранить в памяти, сделать несколько запросов и выйти.Даже использование экземпляра SQLite в памяти кажется излишним.Я не слишком обеспокоен производительностью во время выполнения - это обычно просто небольшие эксперименты на локальной машине - но это просто кажется неправильным.
В идеале, я хотел бы иметь низкие накладные расходы,в памяти строк хранится со слабо определенной схемой, которая легко запрашивается LINQ и требует всего лишь нескольких строк кода для настройки и использования.В стек Microsoft .NET 4 входит что-то подобное?Если бы вы оказались в подобном затруднительном положении, что бы вы сделали?
Ваши мысли ценятся - спасибо!
Алекс