C# DataTable查询示例
代码
public void Test()
{
#region 初始化数据
/* 数据
张三 语文 34.00
张三 数学 58.00
张三 英语 61.00
李四 语文 45.00
李四 数学 87.00
李四 英语 74.00
王五 语文 68.50
王六 数学 83.50
宋王 数学 75.50
*/
DataTable resultDt = new DataTable();
resultDt.Columns.AddRange(new DataColumn[]
{
new DataColumn("name", typeof(string)),
new DataColumn("subject", typeof(string)),
new DataColumn("score", typeof(double))
});
DataRow row1 = resultDt.NewRow(); row1.ItemArray = new object[] { "张三", "语文", 34.00 }; resultDt.Rows.Add(row1);
DataRow row2 = resultDt.NewRow(); row2.ItemArray = new object[] { "张三", "数学", 58.00 }; resultDt.Rows.Add(row2);
DataRow row3 = resultDt.NewRow(); row3.ItemArray = new object[] { "张三", "英语", 61.00 }; resultDt.Rows.Add(row3);
DataRow row4 = resultDt.NewRow(); row4.ItemArray = new object[] { "李四", "语文", 45.00 }; resultDt.Rows.Add(row4);
DataRow row5 = resultDt.NewRow(); row5.ItemArray = new object[] { "李四", "数学", 87.00 }; resultDt.Rows.Add(row5);
DataRow row6 = resultDt.NewRow(); row6.ItemArray = new object[] { "李四", "英语", 74.00 }; resultDt.Rows.Add(row6);
DataRow row7 = resultDt.NewRow(); row7.ItemArray = new object[] { "王五", "语文", 68.50 }; resultDt.Rows.Add(row7);
DataRow row8 = resultDt.NewRow(); row8.ItemArray = new object[] { "王六", "数学", 83.50 }; resultDt.Rows.Add(row8);
DataRow row9 = resultDt.NewRow(); row9.ItemArray = new object[] { "宋王", "数学", 75.50 }; resultDt.Rows.Add(row9);
#endregion #region 定义中间表,将数据转移,所有值类型都为字符串
// score分数值类型为double,不能使用like,只能用数字之间的比较方式,如:>、<、>=、<=、=
// 如果要使用like来查询score,则需要将score转换为字符串,当做字符串来进行查询,所以定义中间表
DataTable dataTable = new DataTable();
foreach (DataColumn item in resultDt.Columns)
{
DataColumn column = new DataColumn(item.ColumnName, typeof(string));
dataTable.Columns.Add(column);
}
foreach (DataRow item in resultDt.Rows)
{
List<string> values = new List<string>();
foreach (object value in item.ItemArray)
{
if (value != null) values.Add(Convert.ToString(value));
else values.Add("");
}
DataRow row = dataTable.NewRow();
row.ItemArray = values.ToArray();
dataTable.Rows.Add(row);
}
#endregion string nameEqualSql = "`name` = '张三'";//等于
string nameNotEqualSql = "`name` <> '张三'";//不等于
string nameLikeSql = "`name` like '%王%'";//模糊匹配
string nameBeginWithSql = "`name` like '王%'";//以它开头
string nameEndWithSql = "`name` like '%六'";//以它结尾
string scoreBeginWithSql = "`score` like '6%'";//以它开头 //等于 - 张三
DataTable result1 = dataTable.Select(nameEqualSql).CopyToDataTable();
// result1:
// 张三 语文 34.00
// 张三 数学 58.00
// 张三 英语 61.00 //不等于 - 张三
DataTable result2 = dataTable.Select(nameNotEqualSql).CopyToDataTable();
// result2:
// 李四 语文 45.00
// 李四 数学 87.00
// 李四 英语 74.00
// 王五 语文 68.50
// 王六 数学 83.50
// 宋王 数学 75.50 //模糊匹配 - 王
DataTable result3 = dataTable.Select(nameLikeSql).CopyToDataTable();
// result3:
// 王五 语文 68.50
// 王六 数学 83.50
// 宋王 数学 75.50 //以它开头 - 王
DataTable result4 = dataTable.Select(nameBeginWithSql).CopyToDataTable();
// result4:
// 王五 语文 68.50
// 王六 数学 83.50 //以它结尾 - 六
DataTable result5 = dataTable.Select(nameEndWithSql).CopyToDataTable();
// result5:
// 王六 数学 83.50 //以它开头 - 6
DataTable result6 = dataTable.Select(scoreBeginWithSql).CopyToDataTable();
// result6:
// 张三 英语 61.00
// 王五 语文 68.50 Console.WriteLine("---End---");
}
C# DataTable查询示例的更多相关文章
- Elasticsearch .Net Client NEST 多条件查询示例
Elasticsearch .Net Client NEST 多条件查询示例 /// <summary> /// 多条件搜索例子 /// </summary> public c ...
- NHibernate查询示例合集
基本查询 复杂查询示例 /// <summary> /// 获取自定义表单数据中属于部门的部分 /// </summary> /// <param name=&quo ...
- MyBatis 查询示例
环境搭建 数据库schema 1)datasource.xml配置 <?xml version="1.0" encoding="UTF-8"?> & ...
- spring boot - 整合jpa多对对关系保存和查询示例
pojo: package com.example.zs.springDataJpa; import org.hibernate.annotations.Proxy; import javax.per ...
- Elasticsearch 邻近查询示例
Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...
- Accessoft-日期区间段查询示例,开始日期至截止日期区段查询
Accessoft-日期区间段查询示例,开始日期至截止日期区段查询 实现功能效果如下: 示例查询开始日期为2017年3月15日到2017年3月16日的内容: sql查询语句如下: SELECT Inf ...
- DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法
DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...
- jquery datatable真实示例
1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodin ...
- SQL Server-简单查询示例(十一)
前言 本节我们讲讲一些简单查询语句示例以及需要注意的地方,简短的内容,深入的理解,Always to review the basics. EOMONTH 在SQL Server 2012的教程示例中 ...
随机推荐
- Seaborn实现多变量分析
import seaborn as sns import numpy as np import pandas as pd import matplotlib.pyplot as plt sns.set ...
- PHP str_rot13() 函数
实例 编码并解码字符串: <?php高佣联盟 www.cgewang.comecho str_rot13("Hello World");echo "<br&g ...
- Skill 脚本演示 ycSchReGrid.il
https://www.cnblogs.com/yeungchie/ ycSchReGrid.il 修复 schematic 或 schematicSymbol 视图中 offGrid 的问题. 回到 ...
- luogu P5325 Min_25筛
LINK:Min_25筛 新版感觉有点鬼畜 而且旧版的也够用了至少. 这个并不算很简单也不算很困难的知识点 学起来还是很麻烦的. (误入了很多dalao的blog 说的云里雾里的 甚是懵逼 这里推荐几 ...
- 5.4 省选模拟赛 修改 线段树优化dp 线段树上二分
LINK:修改 题面就不放了 大致说一下做法.不愧是dls出的题 以前没见过这种类型的 不过还是自己dp的时候写丑了. 从这道题中得到一个结论 dp方程要写的优美一点 不过写的过丑 优化都优化不了. ...
- 使用jsdelivr + GitHub + PicGo搭建免费图床
前言 之前一直有开通有道云笔记会员,主要是为了会员markdown图片可以在线保存的功能,前一阵子会员到期,考虑这个功能可不可以自己单独实现,从而替代使用有道云会员. 通过网上搜索的方式,查询到了几种 ...
- 解Bug之路-Nginx 502 Bad Gateway
解Bug之路-Nginx 502 Bad Gateway 前言 事实证明,读过Linux内核源码确实有很大的好处,尤其在处理问题的时刻.当你看到报错的那一瞬间,就能把现象/原因/以及解决方案一股脑的在 ...
- Linux的VMWare中Centos7的安装
Windows平台下VMWare 14安装Centos 7 一.虚拟机硬件配置 1.选择创建新的虚拟机: 2.选择自定义(高级)进行自定义配置,单击下一步: 3.选择虚拟机硬件兼容性为默认,单击下一步 ...
- day11.函数的全局变量和局部变量
一.定义 """ 局部变量 : 在函数内部定义的变量(局部命名空间) 全局变量 : 在函数外部定义的或者使用global在函数内部定义(全局命名空间) 作用域: 作用的范 ...
- 付费?是不可能的!20行Python代码实现一款永久免费PDF编辑工具
PDF(Portable Document Format),中文名称便携文档格式是我们经常会接触到的一种文件格式,文献.文档…很多都是PDF格式.它以格式稳定的优势,使得我们在打印.分享.传输过程中能 ...