[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 表达式写法(推荐) ...
随机推荐
- POJ 2777 Count Color(线段树之成段更新)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33311 Accepted: 10058 Descrip ...
- linux搭建mysql 5.6.28
1.下载rmp文件 http://dev.mysql.com/downloads/mysql/ 2.安装 rpm -ivh MySQL-server--.linux_glibc2..x86_64.rp ...
- JS判断浏览器类型及版本
浏览器 ie firefox opera safari chrome 分类: 一路辛酸---JavaScript 你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, S ...
- VMware Workstation不可恢复的错误:(vmui)
虚拟机中部署项目,由于项目的日志是gbk的,就把虚拟机中linux编码改成gbk了,结果问题来了,日志显示中文正常了,但是虚拟机运行一下就出错了,注意虚拟机出错,并没导致linux也挂掉,只是linu ...
- Combine small files to Sequence file
Combine small files to sequence file or avro files are a good method to feed hadoop. Small files in ...
- ORA-01034: ORACLE not available如何解决
一个小小的问题,让我折腾了一个上午,下午三点彻底解决了,分享一个给大家解决方法,尽管在测试服务器上,但是经验是值得总结和分享的. ERROR:ORA-01034: ORACLE not availab ...
- solr性能调优
Schema Design Considerations indexed fields indexed fields 的数量将会影响以下的一些性能: 索引时的时候的内存使用量 索引段的合并时间 优化时 ...
- cni 添加网络 流程分析
cnitool: Add or remove network interfaces from a network namespace cnitool add <net> <netns ...
- Selenium2怎么调用selenium1中方法
虽然selenium1.0已经成为过去时,现在都用selenium2.0,但是如果想要在代码中调用selenium1.0的api怎么办,看下面 WebDriver driver = new Chrom ...
- c++仿函数 functor
内容整理自国外C++教材 先考虑一个简单的例子:假设有一个vector<string>,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样 ...