[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 表达式写法(推荐) ...
随机推荐
- 详解apache的allow和deny
今天看了一篇关于apache allow,deny的文章收获匪浅,防止被删,我直接摘过来了,原文地址!!! !http://www.cnblogs.com/top5/archive/2009/09/2 ...
- 标准库shared_ptr智能指针的实现
目前测试功能正常.若有不完善的地方在改进吧.时候不早了睡觉去,哎,翘课会被抓,不冒险了.晚安全世界O(∩_∩)O /****************************************** ...
- MAPR 开发环境搭建过程记录
我下载了MAPR 官方提供的virtualbox 和 vmware版本的sandbox进行试用. 开始试用了一会vmware版的,因为不太熟悉vmware的操作,而且vmplayer经常没有反应,后来 ...
- 【温故而知新-Javascript】窗口效果 (全屏显示窗口、定时关闭窗口)
1.全屏显示窗口 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww ...
- 匈牙利算法 codevs 2776 寻找代表元
codevs 2776 寻找代表元 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 广州二中苏元实验学校一共有n个社团,分别用 ...
- Android多线程----异步消息处理机制之Handler详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- NGUI 3.x 练习
一.常用快捷键 Alt+Shitf+W 创建一个新的 Widget Alt+Shift+S 创建一个新的 Sprite Alt+Shift+L 创建一个新的 Label Alt+Shift+T 创建一 ...
- Daikon Forge GUI 制作图集和字体集
Daikon Forge GUI 制作UI面板 在上次的学习中制作了一个简单的面板,下面来学习制作图集以及字体. 1.DF-GUI 图集(Atlas)制作 操作步骤 选中UI Root根节点,在Sce ...
- java 12-4 StringBuffer类的替换、反转、截取功能
1.StringBuffer的替换功能: public StringBuffer replace(int start,int end,String str):从start开始到end用str替换 pu ...
- js原生捕鱼达人(二)
昨天写到构造炮弹,有点小bug不知道大家发现没有,今天继续昨天的步骤 7>构造炮弹 思路和前面都是一样一样的 注意构造函数中需要考虑的属性 和 构造函数的原型上面的方法 <sc ...