转:DataTable的一些特殊用法:Select

当你从数据库里取出一些数据,然后要对数据进行整合,你很容易就会想到:

1DataTable dt = new DataTable();//假设dt是由"SELECT C1,C2,C3 FROM T1"查询出来的结果
2for (int i = 0; i < dt.Rows.Count; i++)
3{
4    if (dt.Rows[i]["C1"].ToString() == "abc")//查询条件
5    {
6        //进行操作
7    }
8}

但这种做法用一两次还好说,用多了就累了。那有没有更好的方法呢?记得LinQ是可以直接对DataTable进行查询操作的,那在.Net Framework 2.0里,有没有类似的方法呢?答案是肯定的,就是dt.Select(),上面的操作可以改成这样:

1DataRow[] drArr = dt.Select("C1=‘abc‘");//查询

还可以这样操作:

1DataRow[] drArr = dt.Select("C1 LIKE ‘abc%‘");//模糊查询
2DataRow[] drArr = dt.Select("‘abc‘ LIKE C1 + ‘%‘", "C2 DESC");//另一种模糊查询的方法
3DataRow[] drArr = dt.Select("C1=‘abc‘", "C2 DESC");//排序

问题又来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:

1DataTable dtNew = dt.Clone();
2for (int i = 0; i < drArr.Length; i++)
3{
4    dtNew.Rows.Add(drArr[i]);
5}

但这样程序就会出错,说该DataRow是属于其他DataTable的,那要怎么做呢?很简单,这样就可以解决了:

1DataTable dtNew = dt.Clone();
2for (int i = 0; i < drArr.Length; i++)
3{
4    dtNew.ImportRow(drArr[i]);
5}

这样就完成了。

时间: 2024-12-04 22:30:06

转:DataTable的一些特殊用法:Select的相关文章

C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN

C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN.NET 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指

C# DataTable的詳細用法

转载别人的转载,原作者都不知道了 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例.           

C# DataTable的詳細用法 (转)

在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例.           DataTable(string

C#中Datatable的Compute的用法(转载)

DataTable dt = new DataTable(); //嵌套的三元运算(iif判断) object obj = dt.Compute("iif(1000=5,1000,iif(100>100,4001,2000))", null); Response.Write(obj);//计算常量,可以没有初始化列 object test = table.Compute("1+1", ""); Console.WriteLine(test)

C# DataSet与DataTable的区别和用法

DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable.DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面. DataSet功能强大有浏览.排序.搜索.过滤.处理分级数据.缓存更改等功能,还可以与XML数据互换.DataSet中可包括多个DataTable,可将多个查询结构存到一个DataSet中,方便操作 ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,为解决DataReader的缺陷设计的

list,arraylist,哈希表,字典,datatable的selct等等用法

例子一.获取到list中的最大值,极其索引 List<int> ls = new List<int>();            ls.Add(1);            ls.Add(2);            ls.Add(8);            ls.Add(6); ls.Select((m, index) => new { index, m }).OrderByDescending(n=>n.m).Take(1);

ORACLE CASE WHEN 及 SELECT CASE WHEN的用法

Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 这两种方式,可以实现相同的功能.简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式. 还有一个需要

for循环、while循环、continue、break、exit解析、select用法

20.10 for循环 eg: 求1到100数字的和.[[email protected] sbin]# vim sum.sh#!/bin/bashsum=0for i in seq 1 5dosum=$[sum+$i]doneecho "$sum" [[email protected] sbin]# sh sum.sh 15文件列表循环[[email protected] sbin]# vim for.sh#!/bin/bashdir=/usr/local/sbin/for a in

Sql2008中使用DataTable作为存储过程的参数

使用DataTable作为存储过程的参数   最近工作中写了几个存储过 程,需要向存储过程中传递字符串,因为SQL Server 2000中没有内置类似于 split 的函数,只好自己处理,将前台数据集中的一列用逗号拆分存到一个List中,再转化为字符串传给存储过程,很是麻烦.今天看了下SQL Server 2008的新特性,发现有表变量的使用,及其将DataTable作为参数的用法,就尝试了一下,简单谈谈心得. 一.测试环境 1.Windows Server 2008 R2 DataCente