每次第一次启动应用程序后,我都会下载所有必需的参考数据(文本文件(csv格式),大小为1MB)。此数据包含大约30000行,每行是一个包含名称,纬度,经度和高度的数据条目。
保存此数据的最佳效果是什么?我试图将这些列表存储在IsolatedStorageSettings中。但这绝对是最糟糕的做法。
另一种方法是将文本文件存储在IsolatedStorageFile目录中,并在每次启动加载文件的应用程序时将其解析到我的列表中。
最难以理解的部分是读取文件。所以我想使用像sqlite这样的数据库有同样的问题,不是吗?
你会如何对待这个问题?
亲切的问候,丹尼
答案 0 :(得分: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/
我有一个随app一起提供的sdf文件,一个Data类如下所示
[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文件中获取项目花费的时间比将它们放在屏幕上所花费的所有其他相关数学所花费的时间花费的时间更少。令人欣慰的是我并没有试图获得来自DB的300000个项目。我可以在索引和类似的事情上做更多的优化,但正如我所说的那样,目前它已经足够快了所以我稍后会重新审视它。