首页 电脑学院 黑客教程 网站技术 网页特效 免费论文 公文写作 演讲发言 实用文档 职场指南 时尚生活 情感男女 其他资讯

您的位置:首页-> 网站技术-> .NET技术-> 怎样在Visual C# .NET中实现一个DataSet的不同记录的选取
怎样在Visual C# .NET中实现一个DataSet的不同记录的选取
怎样在Visual C# .NET中实现一个DataSet的不同记录的选取
来自:Microsoft Knowledge Base Article – 326176,地址: http://support.microsoft.com/default.aspx?scid=kb;EN-US;326176

摘要:

这是一篇基础性由浅入深的文章,这篇举例说明了怎样实现并怎样使用一个DataSetHelper类,该类使用简洁代码来创建一个新的使某个DataTable对象指定的某列的的值具有唯一性的DataTable对象。

????? 为了实现这个目的,你可以使用SelectDistinct这个公开方法,也可以使用一个私有的通过比较可能包含NULL值(DBNull.Value)的字段的辅助方法。

?????? DataSetHelper类包含一个DataSet成员变量,你可以随意的指定现有的一个DataSet对象作为这个DataSet成员的变量。如果这个成员变量是一个有效的DataSet,任一一个SelectDistinct方法创建的DataTable对象都能被填充到这个DataSet里。那样,这个方法就请求返回涉及的DataTable对象。

要求:

下列清单列出的是推荐的硬件、软件、网络基础设施和必须的补丁包:

(1)、Microsoft Windows XP, Windows 2000, or Windows NT 4.0 Service Pack 6a

(2)、Microsoft Visual Studio .NET

这篇文章假设你已熟悉下面的主题:

(1)、Visual C# .NET的语法

(2)、ADO.NET基本原理和语法

DataSetHelper 构造类:

(1)、开始Microsoft Visual Studio .NET。

(2)、在文件(File)菜单,点新建(New),和然后点击项目(Project)。

(3)、在新建项目(New Project)对话框, 点击Visual C#项目(Visual C# Projects)下的项目类型(Project Types),然后点击类库(Class Library)下的模板(Templates)。

(4)、在名称栏里填上DataSetHelper。

(5)、用以下代码替换类代码:

public class DataSetHelper

{

???????? public DataSet ds;

???????? public DataSetHelper(ref DataSet DataSet)

???????? {

???????? ??????? ds = DataSet;

???????? }

???????? public DataSetHelper()

???????? {

???????? ??????? ds = null;

???????? }

}

你可以用2次重载的构造函数来创建一个带或不带一个有效的DataSet的实例类。因为类是涉及一个有效的DataSet,那么这个方法返回的DataTable对象这就自动的填充到这个DataSet里。

注: 增加下面代码在代码窗口的顶部:

using System.Data;

?

SelectDistinct 方法:

这个部分包含代码为公开的SelectDistinct方法和私有的ColumnEqual辅助方法。

(1)、在类定义里增加下面的私有方法,该方法同样被用在其他的DataSetHelper 文章里,它被用做来比较字段的值(包括NULL值) 。

private bool ColumnEqual(object A, object B)

{

???????? ?? // Compares two values to see if they are equal. Also compares DBNULL.Value.

??????? // Note: If your DataTable contains object fields, then you must extend this

??????? // function to handle them in a meaningful way if you intend to group on them.

???????????????????????????

??????? if ( A == DBNull.Value && B == DBNull.Value ) //? both are DBNull.Value

??????????? return true;

??????? if ( A == DBNull.Value || B == DBNull.Value ) //? only one is DBNull.Value

??????????? return false;

??????? return ( A.Equals(B) );? // value type standard comparison

}

(2)、在类定义里增加下面的公开方法。这个方法复制你选定的字段的互异值到一个新的DataTable里。如果这个字段包含NULL值,在目标列里的一条记录里也会包含NULL值。

public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)

{??????

??????? DataTable dt = new DataTable(TableName);

??????? dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);

???????????????????????????

??????? object LastValue = null;

??????? foreach (DataRow dr in SourceTable.Select("", FieldName))

??????? {

??????????? if (? LastValue == null || !(ColumnEqual(LastValue, dr[FieldName])) )

??????????? {

??????????????? LastValue = dr[FieldName];

??????????????? dt.Rows.Add(new object[]{LastValue});

??????????? }

??????? }

??????? if (ds != null)

??????????? ds.Tables.Add(dt);

??????? return dt;

}

测试应用

(1)、保存并编译你先前创建的这部分的DataSetHelper类,然后关闭解决方案。

(2)、在下面的步骤里在Visual Studio .NET里创建一个新的Visual C# Windows Form程序:

A、启动 Visual Studio .NET;

B、在文件(File)菜单,点新建(New),和然后点击项目(Project)。

C、在新建项目(New Project)对话框, 点击Visual C#项目(Visual C# Projects)下的项目类型(Project Types),然后点击Windows应用程序(Windows Application)下的模板(Templates)。

(3)、在解决方案资源管理器里右击解决方案,然后点击添加现有项目,加入DataSetHelper这个项目。

(4)、在项目菜单里,点击项目依赖项(Add Reference)。

(5)、在项目依赖项对话框里,选中依赖项(Projects)标签,然后增加这个DataSetHelper项目和这个Windows Form程序的关系。

(6)、在窗口设计界面里,从工具箱里拖拉一个Button控件和一个DataGrid控件到窗体上,指定这个按钮名为btnSelectDistinct,继续保持DataGrid控件的默认名字(DataGrid1)。

(7)、窗体代码界面里,在代码窗口顶部增加下面的引用声明:

using System.Data;

(8)、在窗体的定义增加下面的变量声明:

DataSet ds;

DataSetHelper.DataSetHelper dsHelper;

(9)、增加下面的构造代码(在the InitializeComponent();的下面):

ds = new DataSet();

dsHelper = new DataSetHelper.DataSetHelper(ref ds);

?

// Create source table

DataTable dt = new DataTable("Orders");

dt.Columns.Add("EmployeeID", Type.GetType("System.String"));

dt.Columns.Add("OrderID", Type.GetType("System.Int32"));

dt.Columns.Add("Amount", Type.GetType("System.Decimal"));

???????????????????????????

dt.Rows.Add(new object[] {"Sam", 5, 25.00});

dt.Rows.Add(new object[] {"Tom", 7, 50.00});

dt.Rows.Add(new object[] {"Sue", 9, 11.00});

dt.Rows.Add(new Object[] {"Tom", 12, 7.00});

dt.Rows.Add(new Object[] {"Sam", 14, 512.00});

dt.Rows.Add(new Object[] {"Sue", 15, 17.00});

dt.Rows.Add(new Object[] {"Sue", 22, 2.50});

dt.Rows.Add(new object[] {"Tom", 24, 3.00});

dt.Rows.Add(new object[] {"Tom", 33, 78.75});

?

ds.Tables.Add(dt);

(10)、增加下面的代码在btnSelectDistinct.Click的事件里:

dsHelper.SelectDistinct("DistinctEmployees", ds.Tables["Orders"], "EmployeeID");

dataGrid1.SetDataBinding(ds, "DistinctEmployees");

(11)、运行这个程序,点击按钮一次,观察DataGrid绑定上从代码生成的表和数据。

注意:你只能点击btnSelectDistinct一次。如果你点击这个按钮超过一次的话,你将收到一条错误信息——你2次都在尝试添加同一个表。

进一步的想法:

你用这个功能只能筛选一个字段为互异,可是你可以类似性的扩展到多个字段。做为另一种选择,你可以调用CreateGroupByTable、InsertGroupByInto, 和 SelectGroupByInto 方法,通过使用GROUP BY-type的函数得到同样的结果。

?




在百度中查找更多怎样在Visual C# .NET中实现一个DataSet的不同记录的选取的内容
职场宝典   职场故事   职场跳槽   职场文化   职场理财   职场充电   情感天地   职场女性   职场礼仪   职场新人
报告总结   述职报告 工作总结 调查报告 工作汇报 计划方案 个人总结 社会实践 规章制度 调研报告 
  实习报告 考察报告 辞职报告 
演讲发言   竞职演说   就职演说   精彩演说   爱国演讲   英语演讲   十七大演讲   安全生产演讲稿   
节日祝福   重阳节 国庆节 教师节 中秋节 情人节 七夕节 劳动节 妇女节 清明节 愚人节 春节 元旦 圣诞节  儿童节  端午节 母亲节 新婚祝福 生日祝福 
讲话致辞   开业开幕   会议主持   庆典致辞   会议发言   党风廉政   党政报告   贺电慰问   婚丧嫁娶   思想宣传
法律常识   基本常识   法律文书   权益常识   劳动保障   婚姻继承   民事诉讼   刑事诉讼   
党建材料   入党申请   思想学习   党性分析   思想汇报   转正申请   民主生活   党委党建   入团申请   申报材料
求职简历   个人简历   求职自荐   求职谋略   面试技巧   求职英语   自我鉴定   英文简历   简历封面
心得体会   心得体会   经验交流   读后感   
时政热点   和谐社会   先进性教育   新农村建设   十七大   八荣八耻   科学发展观   劳动合同法   
人际沟通   社交技巧   社交礼仪   口才技巧   谈话技巧   演讲技巧   
营销技巧   电话销售   网络销售   推销技巧   促销技巧   销售口才   营销手段   销售技巧   谈判技巧   

“ 怎样在Visual C# .NET中实现一个DataSet的不同记录的选取”来源于网络,版权归作者所有!勿用于商业用途。

.NET技术

ASP技术
PHP技术
JSP技术
.NET技术
服务器技术
数据库开发
其它类

本类阅读TOP10

·数据库的连接串(中文)
·DES(Data Encryption Standard)加密解密整理
·利用Jmail发送和接收邮件(C#)
·.NET Framework 中多语言支持的实现
·动态菜单
·.NET 框架类库(上)
·C#中的事件
·微软.NET战略和ASP.NET简介(1)
·加密与解密
·ASP.NET中的代码分离

广告


关于本站|服务条款|广告服务|客服中心|发布文章|网站留言