专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Silverlight

list中的实现快速查询解决办法

发布时间:2011-06-27 19:59:55 文章来源:www.iduyao.cn 采编人员:星星草
list中的实现快速查询
实体类字段 : ID name Longitude Latitude receiveTime


list中差不多得有2W多条记录, silverlight程序500ms就要在list中查询符合条件的记录.
  查询条件是: [三个参数]  
  double _lon1=36;
  double _lat1=120;
  double _lon2=37;
  double _lat2=121;
  datetime _time=2010-09-12 09:09:45;

 条件: longtude>=_lon1 && longtude<=_lon2 && Latitude>=_lat1 && Latitude<=lat2 && receiveTime<_time

我现在的作法是 foreach 遍历整个list, 然后一条一条的比较, 符合条件的再添加至另外的list使用.

请问有没有其它更加高效的算法.数据也可以不保存在list中,

------解决方案--------------------
_lon1 、_lon2、_lat1、lat2、_time 这5个都是标量吧?

用 LINQ 的扩展方法 Where() 试试,看看效果有没有提高。

不要楼主为什么要设计成在 Silverlight 端保存2W多条记录呢,这不是个好办法。
------解决方案--------------------
List<MyClass> list = new List<MyClass>();
List<MyClass> listFind = list.FindAll(target => 
{
double _lon1 = 36;
if (target.Longitude >= _lon1)
{
return true;
}
else
{
return false;
}
});
------解决方案--------------------
我不知道 LINQ 的 Where() 扩展方法会不会采用一些数据结构的算法,只能是先让楼主试试咯,
但是在没有主键等索引的情况下,在内存中查询2W多条记录,开销也是很大的。
如果要增加、从中间插入、删除,开销则更大。

如果是使用 DataTable ,把这几个属性都设为主键,性能是能提高很大的,但是可惜 Silverlight 不支持 DataTable 。

觉得根本的解决方法应是从改变数据库设计入手,设计出一种体现出“增量”变化的数据表,每次只查询“增量”变化的数据表速度可以从根本上得到提高。
------解决方案--------------------
感觉楼主在设计Silverlight数据库。。
学习了。

------解决方案--------------------
有时间可以跟楼主讨论一下数据库的设计。

不过有些疑惑,既然是采用Silverlight应用程序这种分布式的客户端,为什么又要设计为实时的显示/处理大批量的数据呢? 本身“实时”就不是分布式的客户端所能胜任的,而“大批量显示”更是Silverlight所不能实现的。
不知楼主的具体应用场景是?
------解决方案--------------------
探讨
引用:
有时间可以跟楼主讨论一下数据库的设计。

不过有些疑惑,既然是采用Silverlight应用程序这种分布式的客户端,为什么又要设计为实时的显示/处理大批量的数据呢? 本身“实时”就不是分布式的客户端所能胜任的,而“大批量显示”更是Silverlight所不能实现的。
不知楼主的具体应用场景是?

使用silverlight 也是一种偶然的机会,感……

------解决方案--------------------
探讨
应用场景就是一套定位系统,在silverlight程序中实时显示出. 要求的实时性还是比较高的

------解决方案--------------------
探讨

List<MyClass> list = new List<MyClass>();
List<MyClass> listFind = list.FindAll(target =>
{
double _lon1 = 36;
if (target.Longitude >= _l……
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: