Как сохранить справочные данные

После каждого первого запуска приложения я загружаю все необходимые справочные данные (текстовый файл (формат csv) размером 1 МБ). Эти данные содержат около 30000 строк, и каждая строка представляет собой запись данных с именем, широтой, долготой и высотой.

Какой самый эффективный способ сохранить эти данные? Я попытался сохранить их список в IsolatedStorageSettings. Но это абсолютно худший подход.

Другой способ - сохранить текстовый файл в каталоге IsolatedStorageFile и при каждом запуске приложения загружать файл и анализировать его в моем списке.

Самая несоответствующая часть читает файл. Так что я думаю, что использование базы данных, такой как sqlite, имеет ту же проблему, не так ли?

Как бы вы относились к этой проблеме?

С наилучшими пожеланиями, Дэнни

1 ответ

Я сделал нечто подобное в приложении WherOnEarth. У нас есть база данных SQLCE, в которой мы храним данные, а затем загружаем то, что рядом.

Фоновое чтение: http://www.silverlightshow.net/items/Windows-Phone-7.1-Local-SQL-Database.aspx & http://www.jeffblankenburg.com/2011/11/30/31-days-of-mango-day-30-local-database/

У меня есть файл sdf, который я отправляю вместе с приложением, класс данных показан ниже

    [Table]
    public class PointData : IPositionElement, INotifyPropertyChanged
    {
            [Column]
            public string Description { get; set; }

            [Column]
            public double Latitude { get; set; }

            [Column]
            public double Longitude { get; set; }

Затем мы читаем пункты, которые находятся рядом, я получаю их со следующим:

    (from ht in _context.Points
         where ht.Latitude >= bottomLeft.Latitude && ht.Latitude <= topRight.Latitude &&
         ht.Longitude >= bottomLeft.Longitude && ht.Longitude <= topRight.Longitude
         select ht
         ).ToArray();

Этот подход был достаточно быстрым для меня (т. Е. Потребовалось меньше времени для извлечения элементов из файла sdf, чем для размещения их на экране и выполнения всех других связанных с этим математических операций). Я не пытался получить 300000 элементов из БД. Было больше оптимизаций, которые я мог бы сделать в отношении индексации и тому подобного, но, как я уже сказал, в данный момент это было достаточно быстро, поэтому я еще вернусь к нему позже.

Другие вопросы по тегам