引言

可以说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方法的更多相关文章

  1. C# DataTable的Select()方法不支持 != 判断

    异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记“!”. Source= ...

  2. C# Datatable的Select方法

    lubiaopan 原文 Datatable的Select()方法简介 DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Da ...

  3. DataTable的Select()方法

    DataRow[] partno = dtPack.Select("PK_SOHEAD = " + pk_sohead + " AND PART_NO = '" ...

  4. Datatable的Select()方法简介

    DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的 ...

  5. 关于DataTable.Select方法偶尔无法正确查到数据的处理方法

    项目中经常用DataTable在内存中存储并操作数据,在进行报表开发的时候,报表的各种过滤功能用这个内存表可以大现身手,但最近在使用过程中却遇到一个奇怪的现象,现将该问题及处理方法记录一下.这是在做护 ...

  6. Datatable的Select()

    利用datatable的select方法筛选出符合条件的datarow进行操作 Select() Select(string filterExpression) Select(string filte ...

  7. [datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法

    -- :09关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在实际编程工程中,常常遇到这样的情况:DataTable并不 ...

  8. c# DataTable 中 Select 和 Clone 用法结合

    C# DataTable是存放数据的一个离线数据库,将数据一下加载到内存. DataTable.Select ()方法: Select();//全部查出来    Select(过滤条件);//根据过滤 ...

  9. C#DataTable 使用GroupBy方法的lamda 表达式和Linq语句写法

    https://www.cnblogs.com/johnblogs/p/6006867.html DataTable ds = new DataTable(); //1.lamda 表达式写法(推荐) ...

随机推荐

  1. openresty(nginx)、lua、drizzle调研

    一.概述: 1.研究目标:nginx中使用lua脚本,及nginx直接访问mysql,redis 2.需要安装的内容: openresty,mysql,redis 3.OpenResty (也称为 n ...

  2. 虚拟机下Ubuntu没有GUI图形界面,解决方法

    先说下快捷键,CLI切换到GUI:Ctrl+Alt+F7: GUI切换到CLI:Ctrl+Alt+F1. 今天折腾虚拟机时,打开Ubuntu后显示的是命令行界面,按快捷键后并没转换到图形界面,而是一直 ...

  3. 【对比分析八】null和undefined的区别

    (1).  null是一个表示"无"的对象,转为数值时为0  undefined是一个表示"无"的原始值,转为数值时为NaN (2).  当声明的变量还未被初始 ...

  4. NOIP2008 普及组T2 排座椅 解题报告-S.B.S

    题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳.同学 ...

  5. uva 1152 4 values whose sum is zero ——yhx

    The SUM problem can be formulated as follows: given four lists A;B;C;D of integer values, computehow ...

  6. 矩阵乘法快速幂 codevs 1574 广义斐波那契数列

    codevs 1574 广义斐波那契数列  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond   题目描述 Description 广义的斐波那契数列是指形如 ...

  7. div中的内容垂直居中的五种方法

    一.行高(line-height)法 如果要垂直居中的只有一行或几个文字,那它的制作最为简单,只要让文字的行高和容器的高度相同即可,比如: p { height:30px; line-height:3 ...

  8. JS中的基本运动逻辑思想总结

    总结一下自己今天学习运动的基本思想:‘ [1]对于移动的div,使其在某一个位置停止将其封装成一个函数,仅仅改变speed的正负即可 涉及到问题包括: var time=null; function  ...

  9. JMeter学习(五)检查点

    JMeter也有像LR中的检查点,本篇就来介绍下JMeter的检查点如何去实现. JMeter里面的检查点通过添加断言来完成. 检查点:上一章讲到,我们对用户名和密码进行了参数化,那么怎样来判断jme ...

  10. java8-1 final

    1.final可以修饰类,方法,变量 特点: final可以修饰类,该类不能被继承. final可以修饰方法,该方法不能被重写.(覆盖,复写) final可以修饰变量,该变量不能被重新赋值.因为这个变 ...