[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 表达式写法(推荐) ...
随机推荐
- Window I/O 完成端口 (Windows I/O Completion Port (IOCP))
相关对象 IO EndPoint, 所有支持重叠IO(overlapped IO)的设备,比如文件,Winsock,管道等. IOCP, IO完成端口内核对象,可以使用API CreateIoComp ...
- 我的NopCommerce之旅(6): 应用启动
一.基础介绍 Global.asax 文件(也称为 ASP.NET 应用程序文件)是一个可选文件,该文件包含响应 ASP.NET 或 HTTP 模块所引发的应用程序级别和会话级别事件的代码. Appl ...
- 电磁兼容设计经验(转载 原文电子科技大学硕士毕业论文DDS扩频技术研究)
2 Corinthians 1:3-4“[Praise to the God of All Comfort] Praise be to the God and Father of our Lord J ...
- 利用Google Speech API实现Speech To Text
很久很久以前, 网上流传着一个免费的,识别率暴高的,稳定的 Speech To Text API, 那就是Google Speech API. 但是最近再使用的时候,总是返回500 Error. 后来 ...
- [转载]ExtJs4 笔记(7) Ext.tip.ToolTip 提示
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- 第23章 SEH结构化异常处理(2)_编译器对系统SEH机制的封装
23.2 编译器层面对系统SEH机制的封装 23.2.1 扩展的EXCEPTION_REGISTRATION级相关结构:VC_EXCEPTION_REGISTRATION (1)VC_EXCEPTIO ...
- docker中清理冗余的image,container
1) 首先进入超级用户模式 [root@docker ~]# sudo su2) 删除container ( container运行时是不能删除的 )首先停止container [root@docke ...
- GridControl控件绑定RepositoryItemImageComboBox 作为下拉框使用
如果,时间长时了,已前做过的东西,都记不得了,所以记录一下. 废话不多说. 1.拖出gridview控件,然后将字段绑定上去 2.将要做下拉框的控件加入RepositoryItemImageCombo ...
- OXM
O/X Mapper 是什么? Spring 3.0 的一个新特性是 O/X Mapper.O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML.它的目的是在 Java 对象(几乎 ...
- POJ 1141 Brackets Sequence
Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29502 Accepted: 840 ...