[c#基础]DataTable的Select方法
引言
可以说DataTable存放数据的一个离线数据库,将数据一下加载到内存,而DataReader是在线查询,而且只进形式的查询,如果后退一步,就不可能了,DataTable操作非常方便,但也有缺点,数据量非常大的时候,一下加载到内存,可想而知会有多么的卡了。这里只是说明DataTable的select()方法,具体项目根据需求,可以自己选择。
Select
既然DataTable是一下从数据库中拿数据,肯定提供了更方便的筛选方法,然后就找了一下,觉得Select能满足日常的筛选工作,做了一个小demo,测试了一下。
//
// 摘要:
// 获取所有 System.Data.DataRow 对象的数组。
//
// 返回结果:
// System.Data.DataRow 对象的数组。
public DataRow[] Select();
//
// 摘要:
// 获取按与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
//
// 参数:
// filterExpression:
// 要用来筛选行的条件。
//
// 返回结果:
// System.Data.DataRow 对象的数组。
public DataRow[] Select(string filterExpression);
//
// 摘要:
// 获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。
//
// 参数:
// filterExpression:
// 要用来筛选行的条件。
//
// sort:
// 一个字符串,它指定列和排序方向。
//
// 返回结果:
// 与筛选表达式相匹配的 System.Data.DataRow 对象的数组。
public DataRow[] Select(string filterExpression, string sort);
//
// 摘要:
// 获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组。
//
// 参数:
// filterExpression:
// 要用来筛选行的条件。
//
// sort:
// 一个字符串,它指定列和排序方向。
//
// recordStates:
// System.Data.DataViewRowState 值之一。
//
// 返回结果:
// System.Data.DataRow 对象的数组。
public DataRow[] Select(string filterExpression, string sort, DataViewRowState recordStates);
Select
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace Wolfy.DatatableSelect
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
DataTable dt = null;
DataTable d = null;
private void btnSearch_Click(object sender, EventArgs e)
{
string where = string.Empty;
if (ckMan.Checked)
{
where += "性别='男'";
}
else
{
where = string.Empty;
}
if (ckCotainsW.Checked)
{
where += ckMan.Checked ? " and 姓名 like '%w%'" : "姓名 like '%w%'";
} DataRow[] rows = dt.Select(where);
richTextResult.AppendText("编号\t姓名\t性别\t年龄\t\r\n");
for (int i = ; i < rows.Length; i++)
{
ShowSearchResult(rows[i]);
} }
private void ShowSearchResult(DataRow row)
{
richTextResult.AppendText(string.Format("{0}\t{1}\t{2}\t{3}\t\r\n", row[], row[], row[], row[]));
}
private void MainForm_Load(object sender, EventArgs e)
{
dt = new DataTable();
DataColumn cell1 = new DataColumn("编号");
cell1.DataType = typeof(System.Int32);
DataColumn cell2 = new DataColumn("姓名");
cell2.DataType = typeof(System.String);
DataColumn cell3 = new DataColumn("性别");
cell3.DataType = typeof(System.String);
DataColumn cell4 = new DataColumn("年龄");
cell4.DataType = typeof(System.Int32);
dt.Columns.AddRange(new DataColumn[] { cell1, cell2, cell3, cell4 }); Random ran = new Random();
string[] gender = { "男", "女", "保密" };
string[] names = { "韩梅梅", "wolfy", "小米", "w3w" };
for (int i = ; i < ; i++)
{
int index = ran.Next(, );
DataRow row = dt.NewRow();
row[] = i;
row[] = names[ran.Next(, )] + i.ToString(); row[] = gender[index];
row[] = ran.Next(, );
dt.Rows.Add(row);
}
dgView.DataSource = dt;
} }
}
测试结果

总结
用select方法进行筛选还是非常方便的,以前的本方法就是遍历,然后将符合条件的数据取出,很麻烦。
[c#基础]DataTable的Select方法的更多相关文章
- C# DataTable的Select()方法不支持 != 判断
异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记“!”. Source= ...
- C# Datatable的Select方法
lubiaopan 原文 Datatable的Select()方法简介 DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Da ...
- DataTable的Select()方法
DataRow[] partno = dtPack.Select("PK_SOHEAD = " + pk_sohead + " AND PART_NO = '" ...
- Datatable的Select()方法简介
DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的 ...
- 关于DataTable.Select方法偶尔无法正确查到数据的处理方法
项目中经常用DataTable在内存中存储并操作数据,在进行报表开发的时候,报表的各种过滤功能用这个内存表可以大现身手,但最近在使用过程中却遇到一个奇怪的现象,现将该问题及处理方法记录一下.这是在做护 ...
- Datatable的Select()
利用datatable的select方法筛选出符合条件的datarow进行操作 Select() Select(string filterExpression) Select(string filte ...
- [datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法
-- :09关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在实际编程工程中,常常遇到这样的情况:DataTable并不 ...
- c# DataTable 中 Select 和 Clone 用法结合
C# DataTable是存放数据的一个离线数据库,将数据一下加载到内存. DataTable.Select ()方法: Select();//全部查出来 Select(过滤条件);//根据过滤 ...
- C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法
https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...
随机推荐
- oracle创建数据库和用户
以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...
- Storm wordcount Read from file
source code: package stormdemo; import java.io.BufferedReader; import java.io.BufferedWriter; import ...
- At least one object must implement IComparable
中文:必须至少有一个对象实现 IComparable. 序列排序时报这个错误 lstReports.OrderBy(r => new { r.DepartmentName, r.ReportNo ...
- Html5 Geolocation获取地理位置信息
Html5中提供了地理位置信息的API,通过浏览器来获取用户当前位置.基于此特性可以开发基于位置的服务应用.在获取地理位置信息前,首先浏览器都会向用户询问是否愿意共享其位置信息,待用户同意后才能使用. ...
- HDU 5083 Instruction --模拟
题意:给出汇编指令,解释出编码或者给出编码,解释出汇编指令. 解法:简单模拟,按照给出的规则一步一步来就好了,主要是注意“SET”的情况,还有要输出的东西最好放到最后一起输出,中间如果一旦不对就可以及 ...
- CSU 1081 集训队分组
题意:有n个学生,比了一场比赛,但是榜单看不到了.现在告诉你m段信息,每段信息的内容是(a,b),表示a的排名比b的高.问你能不能根据这些信息得出这场比赛的前k名. 思路:用拓扑排序找出一组符合k个人 ...
- BUG描述规范
BUG描述规范 一. 目的与适用范围 1.1 目的 报告软件测试错误的目的是为了保证修复错误的人员可以明确报告的错误,从而有利于分析错误产生的原因,定位错误,然后修正之.因此,报告软件测试错误的基本要 ...
- ExtJS要利用观察者模式 去实现自定义的事件
// 要利用观察者模式 去实现自定义的事件 //1:由于浏览器他自己能定义内置的事件(click/blur...) // 我们也应该有一个类似于浏览器这样的类,这个类 自己去内部定义一些事件(自定义事 ...
- 纯CSS3制作卡通场景汽车动画效果
前言 今天分享一下我昨晚做的CSS3动画效果——卡通场景汽车动画.在接触CSS3动画之前,我之前实现一些简单的动画效果都是使用flash完成的.但是自从CSS3横空出世,在移动端对CSS3动画的运用越 ...
- js中的return,return true,return false小结
return 函数执行到这句时会终结,并返回调用函数,而且把表达式的值作为函数的结果返回 return false 可以防止默认的事件行为.例如,默认情况下点击一个<a>元素,页面会跳转 ...