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所不能实现的。
不知楼主的具体应用场景是?
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
新手求助LineSeries折线的圆点怎么去掉
由于数据比较密集,LineSeries的圆点很大程度上影响了折线图的展示,请问可不可以设置式样把...
-
求教大家:如何继承SL5中的DrawingSurface?
自己写了一个MyDrawingSurface类,继承自DrawingSurface,只在原有基础上新增了几个属性而已...
-
[讨论]Silverlight5 RTM 只能在OOB模式下使用3D硬件加速?
来自:http://silverlight.bayprince.com/tutorials.php?tutorial=8
Silv...
-
LineSeries横轴名称重叠问题
LineSeries横轴名称多的时候,就会重叠,看不清楚,有设置让不重叠,省略一些名称
------解决方案---------...
-
Silverlight DataGrid依某列值決定字体顏色
比如:表里有三列:id,namd,age
我希望当age<18时,age数字的颜色为红色.
本人在网上查过...
-
新手问题,关于WPF的DataGrid控件列标题居中问题!
内容居中已经解决但是标题居中查过一些资料无果!网上有silverlight 4的DataGrid居...
-
serverlight 地图路径查询
就是在serverlight地图上创建两个点,实现最短路径的查询功能,不知道有发实现吗?
------解决方案--------...
-
Microsoft Expression Blend 4 的密钥谁有?
下载了一个Microsoft Expression Blend 4 可是要密钥 怎么办
------解决方案--------...
-
silverlight的输入框在win7平板电脑上不能被感知
最近用了个win7的平板电脑,普通页面如果有输入框,光标点击在上面,光标附件会出现一...
-
Win 8将Silverlight和.Net打入冷宫?
在D9大会上,微软演示了Windows 8如何为应用程序整合了一个以触摸操作为主的用户界面,这些应用...