快速查询List中指定的数据
(1,1) (xIndex,yIndex) | (2,1) | (3,1) | (。。。,。。。) |
(1,2) | (2,2) | (3,2) | (。。。,。。。) |
(1,3) | (2,3) | (3,3) | (。。。,。。。) |
(。。。,。。。) | (。。。,。。。) | (。。。,。。。) | (10000,50) |



.png)
//传统遍历 var objPoints = from b in listPoints where b.xIndex == Convert.ToInt32(this.tbX.Text.Trim().ToString()) select b; foreach (var item in objPoints) { showPoints(item); //显示当前点的text属性值; }
hsTemp.Clear();//清空哈希表 int TempCount = listPoints.Count; ; i < TempCount; i++) { if (hsTemp.ContainsKey(listPoints[i].xIndex.ToString()))//如果哈希表中存在key值 { hsTemp[listPoints[i].xIndex.ToString()] += "," + i.ToString();//这里和数组结构类似,改变索引值对应的value值信息 } else { hsTemp.Add(listPoints[i].xIndex.ToString(), i); } }
this.richTextBox1.Text = "新方法查询结果:\n"; //objPonit = new MyPoint(); string currentPX = this.tbX.Text.Trim().ToString(); if (listPoints != null && currentPX != null) { int TempCount = listPoints.Count; && hsTemp.Count <= )//如果list中有数据而哈希表中却没有数据 { FlushTempIndex(); } if (hsTemp.ContainsKey(currentPX)) { string[] arrTempIndex = hsTemp[currentPX].ToString().Split(',');//可以直接将分好的数据放到数组中去 int TempIndexCount = arrTempIndex.Length; ; ; i < TempIndexCount; i++) { if (int.TryParse(arrTempIndex[i], out TempIndex) && TempIndex < TempCount) { showPoints(listPoints[TempIndex]); } } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 快速查询数据.Models { public class MyPoint { public int xIndex { get; set; } public int yIndex { get; set; } public string text { get; set; } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using 快速查询数据.Models; using System.Collections; namespace 快速查询数据 { public partial class Form1 : Form { List<MyPoint> listPoints = new List<MyPoint>(); private Hashtable hsTemp = new Hashtable(); MyPoint objPonit = null; public Form1() { InitializeComponent(); this.tbY.Enabled = false; generaPoints(); } //生成数据源 private void generaPoints() { ; ; i <= ; i++) { ; j <= ; j++) { objPonit = new MyPoint() { xIndex=i,yIndex=j,text=""+count}; count++; listPoints.Add(objPonit); } } } //执行查询 private void btQuery_Click(object sender, EventArgs e) { this.richTextBox1.Text = null; DateTime beforDT = System.DateTime.Now; //耗时巨大的代码 method2(); DateTime afterDT = System.DateTime.Now; TimeSpan ts = afterDT.Subtract(beforDT); this.textBox1.Text = ts.TotalMilliseconds.ToString()+" ms"; } //显示 private void showPoints(MyPoint objMyPoint) { this.richTextBox1.Text += "," + objMyPoint.text; } /// <summary> /// LinQ查询 /// </summary> private void method1() { this.richTextBox1.Text = "传统方法查询结果:\n"; var objPoints = from b in listPoints where b.xIndex == Convert.ToInt32(this.tbX.Text.Trim().ToString()) select b; foreach (var item in objPoints) { showPoints(item); } } /// <summary> /// List和Hashtable集合查询 /// </summary> private void method2() { this.richTextBox1.Text = "新方法查询结果:\n"; //objPonit = new MyPoint(); string currentPX = this.tbX.Text.Trim().ToString(); if (listPoints != null && currentPX != null) { int TempCount = listPoints.Count; && hsTemp.Count <= )//如果list中有数据而哈希表中却没有数据 { FlushTempIndex(); } if (hsTemp.ContainsKey(currentPX)) { string[] arrTempIndex = hsTemp[currentPX].ToString().Split(',');//可以直接将分好的数据放到数组中去 int TempIndexCount = arrTempIndex.Length; ; ; i < TempIndexCount; i++) { if (int.TryParse(arrTempIndex[i], out TempIndex) && TempIndex < TempCount) { showPoints(listPoints[TempIndex]); } } } } } public void FlushTempIndex() { hsTemp.Clear();//清空哈希表 int TempCount = listPoints.Count; ; i < TempCount; i++) { if (hsTemp.ContainsKey(listPoints[i].xIndex.ToString()))//如果哈希表中存在key值 { hsTemp[listPoints[i].xIndex.ToString()] += "," + i.ToString();//这里和数组结构类似,改变索引值对应的value值信息 } else { hsTemp.Add(listPoints[i].xIndex.ToString(), i); } } } } }
快速查询List中指定的数据的更多相关文章
- mssql sqlserver 禁止删除数据表中指定行数据(转自:http://www.maomao365.com/?p=5323)
转自:http://www.maomao365.com/?p=5323 摘要:下文主要讲述,如何禁止删除数据表中指定行数据 最近收到用户一个需求,禁止所有人删除”表A”中,ID 为1.2.3.4.5的 ...
- 每日学习心得:SharePoint 为列表中的文件夹添加子项(文件夹)、新增指定内容类型的子项、查询列表中指定的文件夹下的内容
前言: 这里主要是针对列表中的文件下新增子项的操作,同时在新建子项时,可以为子项指定特定的内容类型,在某些时候需要查询指定的文件夹下的内容,针对这些场景都一一给力示例和说明,都是一些很小的知识点,希望 ...
- SQL查询显示行号、随机查询、取指定行数据
转自:walkingp 1.显示行号 如果数据没有删除的情况下主键与行号是一致的,但在删除某些数据,行号就与主键不一致了,这时需要查询行号就需要用新的方法,在SQL Server2005之前,需要使用 ...
- 快速向表中插入大量数据Oracle中append与Nologging
来源于:http://blog.sina.com.cn/s/blog_61cd89f60102e7gi.html 当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候 ...
- 用Spark查询HBase中的表数据
java代码如下: package db.query; import org.apache.commons.logging.Log; import org.apache.commons.logging ...
- 【Linux】查询文件中指定字符串的记录
语法 cat 文件 |grep 查询字符串 例如现在有文件file.dat,文件中内容如下: zhangsan Lisi wangwu123 wangwu890 zhangsan28290 现在想从文 ...
- Mysql快速删除表中重复的数据
表结构 CREATE TABLE T_VENDOR ( ID ) NOT NULL AUTO_INCREMENT COMMENT 'ID', COUNTRY ) DEFAULT NULL COMMEN ...
- 超实用--删除MYSQL中指定的数据的全部表
作过的人都知道,重复测试数据库的苦恼. 用法:# Usage: ./script user password dbnane mysql.nixcraft.in ~~~~~~~~~~~~~ #!/bin ...
- Java快速向数据库中插入大量数据 比如10万条以上
String sql = "insert into table *****"; //必须要有这句,要不然效果不明显 con.setAutoCommit(false); ps = c ...
随机推荐
- SmartCoder每日站立会议10
站立会议内容: 准备为上交第一阶段项目进行加班,将各个页面联系起来,静态地图变为动态转换,考虑地图全屏或者是小屏即消息展示方式 1.站立会议照片: 2.任务展板: 3.燃尽图:
- SSH实现无密码验证登录
http://blog.csdn.net/houqd2012/article/details/8544517
- 【初码干货】记一次分布式B站爬虫任务系统的完整设计和实施
[初码文章推荐] 程序员的自我修养 Azure系列文章 阿里云系列文章 爬虫系列文章 [初码产品推荐] AlphaMS开发模式 闪送达城市中央厨房 今天带来一个有意思的东西-分布式B站爬虫任务系统 这 ...
- Nim 博弈和 sg 函数
sg 函数 参考 通俗易懂 论文 几类经典的博弈问题 阶梯博弈: 只考虑奇数号楼梯Nim,若偶数楼梯只作容器,那么游戏变为Nim.题目 翻转硬币: 局面的SG值为局面中每个正面朝上的棋子单一存在时的S ...
- profiler内存优化:警惕回调函数
最近做profiler内存优化,踩了一个深坑,觉得有必要做一下笔记. 过程是这样的,游戏启动后,会启动更新模块,加载更新界面,更新检测完成后会切换场景进入登陆界面.切换场景会自动释放上一个场景的资源. ...
- Log4j2分析与实践
当前网络上关于Log4j2的中文文章比较零散,这里整理了一下关于Log4j2比较全面的一些文章,供广大技术人员参考 Log4j2分析与实践-认识Log4j2 Log4j2分析与实践-架构 Log4j2 ...
- 关于JS跨域问题的解决
这里不提供什么高深的代码了,只说明一个解决跨域问题的方法,个人觉得这个方法是最方便也是最有效的. 那就是一用不同源的JS,虽然JS不允许不同源的访问,但是可以引用不同源的JS,用这样的方法我们可以引用 ...
- 手机wap网站建设的方法和技巧
随着互联网技术的不断进步,越来越多的运营商对于手机wap网站的建设有了更多的投入,手机wap网站的建设和开发要根据网站的特点和经营范围来进行设计和建设,这样才可以提升手机wap网站建设的效果.现在智能 ...
- 制作Ubuntu Kylin局域网源
国人参与开发的开源操作系统UbuntuKylin(http://www.ubuntukylin.com/)已经发布有一段时间了,一直想在单位的局域网内部用用,可惜离线安装比较麻烦,于是搜索了些如何制作 ...
- Linux sort -g 的困惑
sort命令是帮我们依据不同的数据类型进行排序,排序的效率很高,因此也是很常用的命令. sort参考及说明:https://www.gnu.org/software/coreutils/manual/ ...