进入旧版 | 服务项目 | 成功案例 | 联系方式 | 过客留言 | 友情链接
   
设为首页
加入收藏
联系我们
网站首页 | 新闻资讯 | 操作系统 | 办公软件 | 网络软件 | 工具软件 | 媒体动画 | 网页制作 | 网站开发 | 程序开发 | 平面设计
Photoshop视频教程 | Word入门 | Flash入门 | JScript | VBScript | ASP | PHP | ADO | 网页特效 | 3DS MAX6.0命令 | 系统进程
您当前的位置:GOODSGY电脑学习网 -> 网站开发 -> ASP -> 文章内容  
选择DataTable中的唯一值(Distinct)

    开发中经常用到筛选DataTable等数据源中的唯一值(类似SQL中Distinct的返回结果),在.NET FX 1.x下我是这写的:
 1static DataTable SelectDistinct(string ReturnTableName, DataTable SourceTable, string ReturnFieldName, string AdditionalFilterExpression)
 2http://www.blue1000.com/upload/061101091042375.gif" align=top>http://www.blue1000.com/upload/061101091042372.gif" align=top>{
 3DataTable dt = new DataTable(ReturnTableName);
 4dt.Columns.Add(ReturnFieldName, SourceTable.Columns[ReturnFieldName].DataType);
 5object LastValue = null;
 6foreach (DataRow dr in SourceTable.Select("", ReturnFieldName))
 7http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>{
 8if (LastValue == null || !(ColumnEqual(LastValue, dr[ReturnFieldName])))
 9http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>{
10LastValue = dr[ReturnFieldName];
11http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>dt.Rows.Add(new object[] { LastValue });
12}

13}

14if (ds != null)
15ds.Tables.Add(dt);
16return dt;
17}

18
19static bool ColumnEqual(object A, object B)
20http://www.blue1000.com/upload/061101091042375.gif" align=top>http://www.blue1000.com/upload/061101091042372.gif" align=top>{
21// Compares two values to see if they are equal. Also compares DBNULL.Value.
22// Note: If your DataTable contains object fields, then you must extend this
23// function to handle them in a meaningful way if you intend to group on them.
24
25if (A == DBNull.Value && B == DBNull.Value) // both are DBNull.Value
26return true;
27if (A == DBNull.Value || B == DBNull.Value) // only one is DBNull.Value
28return false;
29return (A.Equals(B)); // value type standard comparison
30}

31
后来这样写:
 1private DataTable SelectDistinct(DataTable sourceTable, string sourceColumn)
 2http://www.blue1000.com/upload/061101091042375.gif" align=top>http://www.blue1000.com/upload/061101091042372.gif" align=top>{
 3    DataTable result = null;
 4    try
 5http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>    {
 6        result = new DataTable();
 7        result.Columns.Add(sourceColumn, sourceTable.Columns[sourceColumn].DataType);
 8        Hashtable ht = new Hashtable();
 9        foreach (DataRow dr in sourceTable.Rows)
10http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>        {
11            if (!ht.ContainsKey(dr[sourceColumn]))
12http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>            {
13                ht.Add(dr[sourceColumn], null);
14                DataRow newRow = result.NewRow();
15                newRow[sourceColumn] = dr[sourceColumn];
16                result.Rows.Add(newRow);
17            }

18        }

19        return result;
20    }

21    catch (System.Exception ex)
22http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>    {
23        ExceptionManager.Publish(ex);
24        return null;
25    }

26    finally
27http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>    {
28        if (result != null)
29            result.Dispose();
30    }

31}

32
33

再后来又这样写:
 1object[] distinctRoomType = GetDistinctValues(dt,"Roomtype");
 2
 3Here is the method definition. 
 4
 5public object[] GetDistinctValues(DataTable dtable,string colName)
 6http://www.blue1000.com/upload/061101091042375.gif" align=top>http://www.blue1000.com/upload/061101091042372.gif" align=top>{
 7Hashtable hTable = new Hashtable();
 8foreach(DataRow drow in dtable.Rows)
 9http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>{
10try
11http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>{
12hTable.Add(drow[colName],string.Empty);
13}

14http://www.blue1000.com/upload/061101091042377.gif" align=top>http://www.blue1000.com/upload/061101091042373.gif" align=top>catch{}
15}

16object[] objArray = new object[hTable.Keys.Count ];
17hTable.Keys.CopyTo(objArray,0);
18return objArray;
19}

20
现在.NET FX 2.0中只要一句就可以搞定了,方便了许多:
1http://www.blue1000.com/upload/061101091042375.gif" align=top>http://www.blue1000.com/upload/061101091042372.gif" align=top>DataTable d = dataSetName.dataTableName.DefaultView.ToTable(truenew string[] "ColumnName" });

在百度中搜索:选择DataTable中的唯一值(Distinct)
在Google中搜索:选择DataTable中的唯一值(Distinct)
在Yahoo中搜索:选择DataTable中的唯一值(Distinct)

收藏到网摘:新浪VIVI 365key 我摘 POCO网摘 博采中心 YouNote 和讯网摘 天天收藏
[] [返回上一页] [打 印] [收 藏]

 相关文章    最新文章
· Word 2007中选择性删除英文空格
· [图文] WPS选择性粘贴 做带爱心的艺术字
· [图文] 在word2007中合适选择链接和插入
· [图文] 灵活运用 在Word表格实现选择录入
· Excel中调用VBA选择目标文件夹
· [图文] Excel有选择性粘贴之创建名称表格
· 选择使用新版Excel 2007的10条理由
· Photoshop视频教程:2.3.1 路径组件绘制工..
· [图文] 巧用名称框选择过宽的Excel单元格区..
· [图文] 为WPS表格增加选择性粘贴——连接
 
· 初学ASP编程易犯的一个错误要注意
· ASP实现SQL语句日期格式的加减运算
· ASP程序中输出Excel文件实例一则
· ASP实现IE地址栏参数的判断
· ASP技巧:判断远程图片是否存在
· ASP去掉字符串头尾连续回车和空格的Funct..
· 深入认识学习ASP应用Cookies的技巧
· ASP实现邮件发送普通附件和嵌入附件
· 在ASP.NET中把图片保存到SQL SERVER数据库..
· 巧用枚举CommandBehavior关闭SqlDataRead..

∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论…]
站内搜索

精彩图文
  网站导航  
操作系统 办公软件 网络软件
Vista Windows2003 WindowsXP Windows2000/NT Windows9X/ME Linux 其他 Word Excel Powerpoint Outlook 金山系列 其他 网页浏览 上传下载 联络聊天 邮件工具 服务器软件 网络辅助
工具软件 媒体动画 网页制作
系统工具 媒体工具 压缩工具 图文处理 文件管理 其他 3DMAX Authorware Director Maya 视频处理 其他 Flash Dreamweaver FireWorks FrontPage LiveMotion Golive HTML/CSS 其它
网站开发 平面设计 程序设计
ASP JSP PHP CGI JavaScript VBScript XML/SOAP Web服务器 Photoshop PhotoImpact CorelDraw Illustrator Freehand 设计欣赏 其他 VB VC .NET C/C++ DELPHI JAVA

冀ICP备05019428号
Copyright © 2004-2008 电脑学习网 Inc.All rights reserved.
TEL:13832340607
QQ:39873155
E_Mail:goodsgy(#)hotmail.com   (把(#)替换成@)
MSN:goodsgy(#)hotmail.com   (把(#)替换成@)