0

每次启动应用程序后,我都会下载所有必要的参考数据(文本文件(csv 格式),大小为 1MB)。该数据包含大约 30000 行,每行是一个数据条目,包含名称、纬度、经度和高度。

保存这些数据的最有效方法是什么?我试图将这些列表存储在 IsolatedStorageSettings 中。但这绝对是最糟糕的做法。

另一种方法是将文本文件存储在 IsolatedStorageFile 目录中,并在每次启动应用程序时加载文件并将它们解析到我的列表中。

性能最差的部分是读取文件。所以我想使用像 sqlite 这样的数据库也有同样的问题,不是吗?

你会如何看待这个问题?

亲切的问候,丹尼

4

1 回答 1

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-本地数据库/

我有一个随应用程序提供的 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 个项目数据库。关于索引和类似的事情,我可以做更多的优化,但正如我所说,它现在已经足够快了,所以我稍后会重新审视它。

于 2012-02-17T12:35:19.153 回答