原文地址:http://www.cnblogs.com/moss_tan_jun/archive/2010/09/20/1832131.html

得到DataTable

得到DataTable有许多方法,下面简单罗列出来:

1.2.1通过构造函数得到DataTable 
DataTable() 不带参数初始化DataTable 类的新实例。 
DataTable(string tableName) 用指定的表名初始化DataTable 类的新实例。 
DataTable(string tableName, string tableNamespace) 用指定的表名和命名空间初始化DataTable 类的新实例。

1.2.2通过DataSet获取DataTable

DataTable dt=ds.Tables["TableName"];//TableName是表名

1.2.3 通过DataRow自定义DataTable的结构

DataTable dt= new DataTable("TB_USER");
DataColumn colUserID = new DataColumn("USER_ID", Type.GetType("System.Int"));
dt.Columns.Add(colCurrency);
DataColumn colUserName= new DataColumn("USER_NAME", Type.GetType("System.String"));
dt.Columns.Add(colUserName);
这样得到是一个表的结构,里面没有任何数据,表面为TB_USER。
1.2.4通过已有的DataTable得到新的DataTable
可以使用DataTable.Clone()方法获得现有DataTable的表的结构,这在实际中也是常用的
1.2.5通过DataAdapter填充DataTable
DataAdapter.Fill(dt);来填充DataTable,这也是新手常用的方法,通常是些sql语句,然后使用command,是最基础的方法。
1.2.6通过DataRow数组导入DataTable
DataRow [] drs;//drs是某个有数据的DataRow数组

foreach(DataRow dr in drs)

{

dt.ImportRow(dr);

}

1.3  DataTable常用属性 

CaseSensitive 指示表中的字符串比较是否区分大小写。

ChildRelations 获取此DataTable 的子关系的集合。

Columns 获取属于该表的列的集合。

Constraints 获取由该表维护的约束的集合。

DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图。

HasErrors 获取一个值,该值指示该表所属的

DataSet 的任何表的任何行中是否有错误。

MinimumCapacity 获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50。

Rows 获取属于该表的行的集合。

TableName 获取或设置DataTable 的名称。

DataTable成员之DataView

DataView类似数据库中的视图。

DataView 使您能够创建 DataTable 中所存储的数据的不同视图,这种功能通常用于数据绑定应用程序。使用 DataView,您可以使用不同排序顺序显示表中的数据,并且可以按行状态或基于筛选器表达式来筛选数据。

DataView 提供基础 DataTable 中的数据的动态视图:内容、排序和成员关系会实时反映其更改。此行为不同于 DataTable 的 Select 方法,后者从表中按特定的筛选器和/或排序顺序返回 DataRow 数组,虽然其内容反映对基础表的更改,但其成员关系和排序却则保持静态。DataView 的动态功能使其成为数据绑定应用程序的理想选择。
与数据库视图类似,DataView 为您提供了可向其应用不同排序和筛选条件的单个数据集的动态视图。但是,与数据库视图不同的是,DataView 不能作为表来对待,无法提供联接的表的视图。另外,还不能排除存在于源表中的列,也不能追加不存在于源表中的列(如计算列)。

在实际运用中,我们时常使用如下代码:

DataView dv = dt.DefaultView;
dv.Sort = "UserName"; //根据UserName排序,得到新的DataView

DataTable dtNew=dv.ToTable();//将DataView重新转为DataTable

实例篇

实例1.DataTable分组统计数据

Name

Subject

Scores

Jack

001

90

Jack

002

85.5

Tom

001

78.5

Jerry

001

59

Tom

002

100

如上表是dt中的数据,如果要分组进行统计各学生的平均科目成绩,

可以使用如下的方法(当然如果你的.Net版本支持Linq的话,可以使用Linq)

思路:找出所有的学生,遍历表,计算该学生的平均成绩,参考代码如下:

//获取所有的学生
DataView myDataView = new DataView(dt);
string[] strComuns ={ "Name"};
DataTable dtTemp = myDataView.ToTable(true, strComuns);
//新建DataTable存储结构,结构同dt
DataTable  dtNew=dt.Clone();
//根据学生统计数据
for (int i = 0; i < dtTemp.Rows.Count; i++)
{
DataRow drDetail = dtNew.NewRow();
drDetail["Name"] = dtTemp.Rows[i]["Name"].ToString();
drDetail["Scores"] = dt.Compute("AVer(Scores)", "Name='" + dtTemp.Rows[i]["Name"].ToString() + "'");
dtNew.Rows.Add(drDetail);

}

DataTable详解,以及dataview的更多相关文章

  1. C# DataSet和DataTable详解

    1.C# DataSet和DataTable详解:http://www.cnblogs.com/top5/archive/2009/04/23/1441765.html 2.DataSet和DataT ...

  2. C# DataTable 详解

    添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空 ...

  3. DataSet和DataTable详解

    先构建一个结构与用户请求数据结构相同的DataTable,然后将用户的请求数据填充到构建好的DataTable中,最后将DataTable添加到DataSet中. DataTable,,DataCol ...

  4. 关于PagedDataSource分页属性与DataSet和DataTable详解

    Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeate ...

  5. C# DataTable详解

    添加引用 using System.Data; 创建表 //创建一个空表 DataTable dt = new DataTable(); //创建一个名为"Table_New"的空 ...

  6. 001_ jQuery的表格插件dataTable详解

    一. 1.启用id为"datatable1"标签的html的表格jQuery库 $("#datatable1").dataTable( ) Reference: ...

  7. datatable详解(angular-datatable)+后台分页(springmvc)

    datable常规配置,百度一大堆 function prepareDatatable(selector, options) { var defaultOptions = { autoWidth: t ...

  8. [转载]DataView详解

    表示用于排序.筛选.搜索.编辑和导航的 DataTable 的可绑定数据的自定义视图. DataView的功能类似于数据库的视图,他是数据源DataTable的封装对象,可以对数据源进行排序.搜索.过 ...

  9. iPhone应用开发 UITableView学习点滴详解

    iPhone应用开发 UITableView学习点滴详解是本文要介绍的内容,内容不多,主要是以代码实现UITableView的学习点滴,我们来看内容. -.建立 UITableView DataTab ...

随机推荐

  1. Android使用Fragment来实现TabHost的功能(解决切换Fragment状态不保存)以及各个Fragment之间的通信

    以下内容为原创,转载请注明:http://www.cnblogs.com/tiantianbyconan/p/3360938.html 如新浪微博下面的标签切换功能,我以前也写过一篇博文(http:/ ...

  2. Android Testing学习02 HelloTesting 项目建立与执行

    Android Testing学习02 HelloTesting 项目建立与执行 Android测试,分为待测试的项目和测试项目,这两个项目会生成两个独立的apk,但是内部,它们会共享同一个进程. 下 ...

  3. android加固系列—4.加固前先学会破解,无源码调试apk

    [版权所有,转载请注明出处.出处:http://www.cnblogs.com/joey-hua/p/5138585.html] 项目关键java代码为,将tv设置为从jni读取的字符串,这里的破解内 ...

  4. 限制EditText 输入的字节数

    1.代码 name_tv = (EditText) findViewById( R.id.name_tv ); name_tv.addTextChangedListener(new TextWatch ...

  5. 图解六大UML类图关系

    在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...

  6. C#反序化json字符串,不用区分大小写

    最近在做第三方对接的项目,接口返回的数据是json格式,并且每个字段都是小写的,而我们程序类中的属性是要求大写的:刚开始想到的是用JavaScriptSerializer,但是这个并不满足需求 就换了 ...

  7. iOS开发之 用第三方类库实现轮播图

    在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod ...

  8. google 火狐 模拟显示手机页面插件

    google      user agent switcher扩展 火狐          user agent switcher

  9. Spark:利用Eclipse构建Spark集成开发环境

    前一篇文章“Apache Spark学习:将Spark部署到Hadoop 2.2.0上”介绍了如何使用Maven编译生成可直接运行在Hadoop 2.2.0上的Spark jar包,而本文则在此基础上 ...

  10. [修复Win8.1 BUG] 解决Win8.1英文字体发虚不渲染问题

    Win8.1更新了宋体字体,中文字体显示漂亮了,但英文字体发虚不渲染,尤其是小号的英文和数字字体,看下图. 1.下载Win8的宋体2.打开字体文件点击安装3.导入注册表文件4.重启Win8.1 下载链 ...