DataTable汇总
一、排序
1 获取DataTable的默认视图
2 对视图设置排序表达式
3 用排序后的视图导出的新DataTable替换就DataTable
(Asc升序可省略,多列排序用","隔开)
DataView dv = dt.DefaultView;
dv.Sort = "id Asc,name Desc";
dt = dv.ToTable();
二、检索
1 设置查询字符串
2 使用Select方法获取到所有满足条件的数据行对象数组
(多项查询条件间,用and隔开.模糊查询使用 like %)
DataRow[] matches = dt.Select("(id>=20) and (title='会议') and (yearstr like '%2007%')");
string strName = matches[0]["name"].ToString();
另外也可以用下面这种方法,将检索出来的新表绑定到GridView
DataView dv = dt.DefaultView;
dv.RowFilter = "id>=2";
this.GridView1.DataSource = dv;
this.GridView1.DataBind();
三、合并
假定有2个DataTable:Dt1 , Dt2。表结构一样
将Dt2接在Dt1后可采用此方法
dt1.Merge(dt2);
四、分页
PagedDataSource pds = new PagedDataSource();
pds.AllowPaging = true;
pds.DataSource = dvIntegralExpense;
pds.AllowPaging = true;
pds.PageSize = pager.PageSize;
pds.CurrentPageIndex = pager.PageIndex;
rptIntegralExpense.DataSource = pds;
rptIntegralExpense.DataBind();
DataTable查询:
这里说到的查询有两种。
/// <summary>
/// 使用DataTable.Select方法检索
/// </summary>
public static void VilideDataTableSelect()
{
DataTable dt = GetTable();
// 类似where条件查询,可以使用Id=2 and Name=ddd
DataRow[] rows = dt.Select("Id=2 and Name like 'tang%'"); // select类似where条件
foreach (DataRow dr in rows)
{
Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"]));
}
}
3.最后使用以下,Find方法。
/// <summary>
/// 使用DataTable.Rows.Find方法检索
/// </summary>
public static void VilideDataRowFind()
{
DataTable dt = GetTable();
// 设置主键,可以使用复合主键
dt.PrimaryKey = new DataColumn[] { dt.Columns["Id"] };
DataRow dr = dt.Rows.Find(2); // 查找Id=2的。即,这里检索主键。
Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"]));
}
总结:到现在才发现原来本身有很多方法可以检索的,所以也不必每次都循环遍历查找了
DataTable添加行或者插入行时显示"改行已属于另一表"的解决方案
1.运用add方法的解决方案:
DataTable dt = new DataTable();
dt = ds.Tables["All"].Clone();//把All的结构传递给dt
DataRow[] dr=this.dataSet31.Tables["Product"].Select("bc=1");
for(int i=0;i<dr.Length;i++)
{
//将数组元素加入表
dt.Rows.Add(dr[i]);//出错提示为:该行已经属于另一个表
}
//解决方法
dt.Rows.Add(dr[i].ItemArray);
//这样就好了!
2.运用insertAt方法的解决方案:
假设有table1和table2
你想把table1的内容插入到table2
那么
DataRow row = table2.NewRow();
row.ItemArray = table1.Rows[你需要的Row的索引].ItemArray;
table2.Rows.InsertAt(row,你插入的索引);
DataTable 修改列名 删除列 调整列顺序
DataTable myDt =dt;
//删除列
myDt.Columns.Remove("minArea");
myDt.Columns.Remove("maxArea");
//调整列顺序 ,列排序从0开始
myDt.Columns["num"].SetOrdinal(1);
//修改列标题名称
dt.Columns["num"].ColumnName = "搜索量";
dt.Columns["rate"].ColumnName = "百分比";
DataTable汇总的更多相关文章
- DataTable,List,Dictonary互转,筛选及相关写法
1.创建自定义DataTable /// 创建自定义DataTable(一) 根据列名字符串数组, /// </summary> /// <param name="sLi ...
- 多工段查询存放到DataTable到List<DataTable>集合在C#里面做汇总
private void btnQuery_Click(object sender, EventArgs e) { if (cboxFactory.Text=="") { Mess ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- 遍历datatable的方法汇总
遍历datatable的方法方法一: DataTable dt = dataSet.Tables[]; ; i < dt.Rows.Count ; i++) { string strName = ...
- 2016.2.28 DataTable用法汇总
将控件的DataSource转换为DataTable,但是,此控件的DataSource绑定时必须是DataTable,不能是List DataTable dt = (bgvRoutePortion. ...
- datatable生成easyui的json格式汇总( 转)
转自 http://www.cnblogs.com/WikStone/archive/2012/07/02/2573137.html 目前项目没有使用第三方的json转换库,都是根据json格式进行字 ...
- [C#] DataTable 操作汇总(持续更新)
1.DataTable 分组操作 var grow = dt.Select().GroupBy((row1) => { return new { //分组的字段 fieldA = row1[&q ...
- C#开源系统大汇总(个人收藏)
C#开源系统大汇总 一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...
- c# applibrary实现一个Sheet表中存放多张DataTable数据
1.工具类(applibrary.dll) public class ExcelHelper { /// <summary> /// 文件名 /// </summary> pu ...
随机推荐
- 老男孩python自动化运维作业1
#!/usr/bin/env pthon #字典操作三级菜单 “b”返回上一级菜单,“q”退出. menu={"BJ":{"cp":{1:1,2:2,3:3}, ...
- Android开发工具全面转向Android Studio(2)——AS project/module的CRUD
本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好. 这个世界很奇妙,所有的东西离不开CRUD,即增删改查.即使人本身也遵循这个 ...
- 20151207Study
Liberal lawmakers proposed a bill to reduce the cost of medicine for older Americans.自由主义立法者提出一条减少老年 ...
- ReferenceQueue<T>随笔
参考资料: ReferenceQueue食用手册 java引用食用手册 ReferenceQueue源代码里面很好的展示了java队列的实现思路, 以及多线程观察者的实现思路 多线程观察者实现思路: ...
- 20145229&20145316 《信息安全系统设计基础》 实验二 固件设计
实验封面 实验步骤 1.配置环境 开发环境的配置同实验一 2.拷贝文件 将实验代码拷贝到共享文件夹中 3.在虚拟机中编译代码 4.下载调试 在超级终端中运行可执行文件pthread,可得实验结果如图 ...
- Mac下U盘安装系统“未验证的错误”
bash下 输入下面命令: date 1220141012015.30
- Python小练习三
# 检查用户名和PIN码 database = [ ['], ['], ['], ['] ] username = input('User name:') pin = input('PIN code: ...
- python3中返回字典的键
我在看<父与子的编程之旅>的时候,有段代码是随机画100个矩形,矩形的大小,线条的粗细,颜色都是随机的,代码如下, import pygame,sys,random from pygame ...
- php怎么解决超链接中的中文参数转码问题?
如题,我需要通过前端的网页传递一个中文参数(如:电脑)给后端的PHP文件,传递方式是通过超链接 "index.php/search/keyword/电脑" ,很明显的中文在传递过程 ...
- 轻松创建R语言函数包
讲真,用R这么几年,始终未尝试过写自己的包,看来这就是我与真正程序员的差距了——编程习惯等于没有. 昨天一个偶然的机会想开始写自己的工具包,发现了前期教程的有一些过时.于是,写一个**windows* ...