代码

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查询示例的更多相关文章

  1. Elasticsearch .Net Client NEST 多条件查询示例

    Elasticsearch .Net Client NEST 多条件查询示例 /// <summary> /// 多条件搜索例子 /// </summary> public c ...

  2. NHibernate查询示例合集

    基本查询   复杂查询示例 /// <summary> /// 获取自定义表单数据中属于部门的部分 /// </summary> /// <param name=&quo ...

  3. MyBatis 查询示例

    环境搭建 数据库schema 1)datasource.xml配置 <?xml version="1.0" encoding="UTF-8"?> & ...

  4. spring boot - 整合jpa多对对关系保存和查询示例

    pojo: package com.example.zs.springDataJpa; import org.hibernate.annotations.Proxy; import javax.per ...

  5. Elasticsearch 邻近查询示例

    Elasticsearch 邻近查询示例(全切分分词) JAVA API方式: SpanNearQueryBuilder span = QueryBuilders.spanNearQuery(); s ...

  6. Accessoft-日期区间段查询示例,开始日期至截止日期区段查询

    Accessoft-日期区间段查询示例,开始日期至截止日期区段查询 实现功能效果如下: 示例查询开始日期为2017年3月15日到2017年3月16日的内容: sql查询语句如下: SELECT Inf ...

  7. DataTable、List使用groupby进行分组和分组统计;List、DataTable查询筛选方法

    DataTable分组统计: .用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new ...

  8. jquery datatable真实示例

    1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodin ...

  9. SQL Server-简单查询示例(十一)

    前言 本节我们讲讲一些简单查询语句示例以及需要注意的地方,简短的内容,深入的理解,Always to review the basics. EOMONTH 在SQL Server 2012的教程示例中 ...

随机推荐

  1. 不想得手指关节炎?帮你提炼IDEA常用代码补全操作

    一.常用的代码补全操作 1..for和.fori(for 循环遍历) 输入args.for回车(args是一个数组或集合类),则会生成for循环遍历: 输入args.fori回车,则会生成带有索引的f ...

  2. MySQL选错索引导致的线上慢查询事故

    前言 又和大家见面了!又两周过去了,我的云笔记里又多了几篇写了一半的文章草稿.有的是因为质量没有达到预期还准备再加点内容,有的则完全是一个灵感而已,内容完全木有.羡慕很多大佬们,一周能产出五六篇文章, ...

  3. EC R 87 div2 D. Multiset 线段树 树状数组 二分

    LINK:Multiset 主要点一下 二分和树状数组找第k大的做法. 线段树的做法是平凡的 开一个数组实现就能卡过. 考虑如树状数组何找第k大 二分+查询来判定是不优秀的. 考虑树状数组上倍增来做. ...

  4. SparkSQL & Spark on Hive & Hive on Spark

    刚开始接触Spark被Hive在Spark中的作用搞得云里雾里,这里简要介绍下,备忘. 参考:https://blog.csdn.net/zuochang_liu/article/details/82 ...

  5. Lucas(卢卡斯)定理

    公式 $$C_n^m\%p=C_{n/p}^{m/p}*C_{n\%p}^{m\%p}\%p~~(p为素数)$$ 代码如下 typedef long long ll; ll mod_pow(ll x, ...

  6. 要做重试机制,就只能选择 DelayQueue ?其实 RabbitMQ 它上它也行!

    原文链接:要做重试机制,就只能选择 DelayQueue ?其实 RabbitMQ 它上它也行! 一.场景 最近研发一个新功能,后台天气预警:后台启动一条线程,定时调用天气预警 API,查询现有城市的 ...

  7. Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树

    Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量基础 ...

  8. Android SP的具体内容

    过了这么久了,看看自己的园龄都17天了,一直在总结,从未缺席,我还是很开心的,踏踏实实的完成自己能学到的. 今天学习SP SP:全称SharedPreferences,别问我为啥知道,因为打了好多遍了 ...

  9. 记一次LayUI中Table动态添加列数据

    这次在开发中遇到,有列数不固定的情况.废话不多说,先上图,在上代码. 下面上JS代码 function SearchData() { var dYear = $("#DYear") ...

  10. C/C++陷阱与套路,当年就是折在这些地儿…

    摘要:本文结合作者的工作经验和学习心得,对C++语言的一些高级特性,做了简单介绍:对一些常见的误解,做了解释澄清:对比较容易犯错的地方,做了归纳总结:希望借此能增进大家对C++语言了解,减少编程出错, ...