1.  //生成两张Table:dt1和dt2 其中dt1设置第一列为主键DataTable dt1 = new DataTable();dt1.Columns.Add("c1", typeof(string));dt1.Columns.Add("c2", typeof(string));dt1.Columns.Add("c3", typeof(string));dt1.Columns.Add("c4", typeof(string));dt1.Columns.Add("c5", typeof(string));dt1.Columns.Add("c6", typeof(string));DataColumn[] clos = new DataColumn[1];clos[0] = dt1.Columns["c1"];dt1.PrimaryKey = clos; DataTable dt2 = new DataTable();dt2.Columns.Add("c1", typeof(string));dt2.Columns.Add("c2", typeof(string));dt2.Columns.Add("c3", typeof(string));dt2.Columns.Add("c4", typeof(string));dt2.Columns.Add("c5", typeof(string));dt2.Columns.Add("c6", typeof(string));//每张Table都添加20000条数据for (int i = 0; i < 20000; i++){dt1.Rows.Add(i.ToString(), "C2_" + i, "C3_" + i, "C4_" + i, "C5_" + i, "C6_" + i); }for (int i = 0; i < 10000; i++){dt2.Rows.Add(i.ToString(), "C2_" + i, "C3_" + i, "C4_" + i, "C5_" + i, "C6_" + i);}for (int i = 0; i < 10000; i++){dt2.Rows.Add(i.ToString(), "C2_" + i, "C3_" + i, "C4_" + i, "C5_" + i, "C6_" + i);}
  2.   //对dt1查询主键列DateTime dt_1 = DateTime.Now;for (int i = 0; i < 10000; i++){DataRow[] rows = dt1.Select(string.Format("`c1` = '{0}'", i));}DateTime dt_2 = DateTime.Now;Console.WriteLine((dt_2 - dt_1).TotalMilliseconds);//对dt2查询对应的列dt_1 = DateTime.Now;for (int i = 0; i < 10000; i++){DataRow[] rows = dt2.Select(string.Format("`c1` = '{0}'", i));} dt_2 = DateTime.Now;Console.WriteLine((dt_2 - dt_1).TotalMilliseconds);//利用LINQ查询dt1主键列dt_1 = DateTime.Now;for (int i = 0; i < 10000; i++){var results = from myRow in dt1.AsEnumerable()where myRow.Field<string>("c1") == i.ToString()select myRow;}dt_2 = DateTime.Now;Console.WriteLine((dt_2 - dt_1).TotalMilliseconds);//利用LINQ查询dt2对应的列dt_1 = DateTime.Now;for (int i = 0; i < 10000; i++){var results = from myRow in dt2.AsEnumerable()where myRow.Field<string>("c1") == i.ToString()select myRow; }dt_2 = DateTime.Now;Console.WriteLine((dt_2 - dt_1).TotalMilliseconds);

3.输出结果为:

4.结论:利用linq在datatable中查询数据效率最优。原因是linq是编译执行的,而select方法需要对表达式解析。

关于DataTable查询数据的几种方式相关推荐

  1. mybatis-plus:根据日期或时间范围查询数据的3种方式

    实体类字段设置 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy- ...

  2. android sqlite使用之模糊查询数据库数据的三种方式

    android sqlite使用之模糊查询数据库数据的三种方式 android应用开发中常常需要记录一下数据,而在查询的时候如何实现模糊查询呢?很少有文章来做这样的介绍,所以这里简单的介绍下三种sql ...

  3. oracle--day2(单值函数(字符函数,日期函数,转换函数,数字函数),日期格式(yyyy,mm等含义),表示一个日期数据的4种方式,多表查询(连接查询(等值连接,不等值连接,外连接,自连接))

    第三章:单值函数     函数分为:       1.单值函数           1.字符函数           2.日期函数           3.转换函数           4.数字函数 ...

  4. es重建字段类型_关于elasticsearch中更新数据的几种方式

    作为一个成熟的框架,Elasticsearch里面提供了丰富的操作数据的api,本篇我们就来学习一下在es中更新数据的几种方式. (一)更新文档 (1)部分更新: java api: ` HashMa ...

  5. Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式

    Spark-Streaming获取kafka数据的两种方式-Receiver与Direct的方式,可以从代码中简单理解成Receiver方式是通过zookeeper来连接kafka队列,Direct方 ...

  6. C#读取Excel数据的几种方式(包含大量数据读取)

    C#读取Excel数据的几种方式(包含大量数据读取) C#读取Excel数据的几种方式(包含大量数据读取) OleDB方式 COM组件的方式 NPOI方式读取(此处未测试,参考其他博文) 常用的Exc ...

  7. Spark读取Hive数据的两种方式与保存数据到HDFS

    Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...

  8. 关于串口通讯查询与中断两种方式

    串口通讯有查询与中断两种方式 2011-09-13 13:31 我们知道串口通讯有查询与中断两种方式,但是对于两种方式的区别很多人并不是非常清楚,对于两者的实现到底有和不同呢?让我们简单的总结如下: ...

  9. Android数据存储几种方式用法总结

    Android数据存储几种方式用法总结 1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存 ...

最新文章

  1. 一个httpwebrequest异步下载的例子
  2. 用户控件和自定义控件
  3. 函数包装器,函数私有类处理
  4. override覆盖
  5. linux临时启动进程命令,Linux常用命令(一)服务控制及优化启动过程
  6. 渗透测试入门25之一次完整的渗透测试实验
  7. date time 分开存储如何合并_如何将多个日期跨度合并/拆分为一个时间轴(Oracle 11g)?...
  8. 如何在Mac上用Script启动quicktime录制?
  9. git log 提交日志及图形化显示
  10. Java Socket 编程
  11. 【转】FluentAPI详细用法
  12. Pulseaudio之同步/异步(十一)
  13. 下载LineageOS 源码编译
  14. IDEA中springboot项目启动慢
  15. 对象存储是什么?看过就明白了
  16. 大国崛起(四)————英国
  17. 网吧组网产品升级方案
  18. django mysql sql语句_Django中使用mysql数据库并使用原生sql语句操作
  19. SQL注入原理及联合查询
  20. Unity3D FPS帧数修改

热门文章

  1. 【毕业设计_课程设计】基于深度学习的阿兹海默症早期诊断辅助系统设计与实现
  2. 诺基亚两年裁员11044人,中国幅度最大达3500人
  3. 计算机辅助翻译教学现状,计算机辅助翻译(CAT)技术的教学现状调查报告
  4. C++、PHP、Java、Python学哪个好?如何才能少走弯路
  5. 爬取豆瓣正在上映的影片信息
  6. 2015智能手机操作系统
  7. 实现一台电脑可上公司内网也可以访问外网
  8. 开源的前端GIS空间分析库介绍 (三)turf与ol结合
  9. 交换机与路由技术-15-链路聚合
  10. 【04 核心类库 6.网络编程】