ADO.NET 从DataTable中获取某列含有的不重复值的几种方式

 

在实际开发过程中也许不少人也遇到过我同样的需求:

需要获取DataTable中某一列或几列的含有的不同值,得到类似SQL中Group By的结果

1、传统做法是遍历DataTable(.NET Framework个版本通用) 

 

 /// 按照fieldName从sourceTable中选择出不重复的行, 
        /// 相当于select distinct fieldName1,fieldName2,,fieldNamen from sourceTable 
        /// </summary> 
        /// <param name="tableName">表名</param> 
        /// <param name="sourceTable">源DataTable</param> 
        /// <param name="fieldNames">列名数组</param> 
        /// <returns>一个新的不含重复行的DataTable,列只包括fieldNames中指明的列</returns> 
        public DataTable SelectDistinct(string tableName, DataTable sourceTable, string[] fieldNames) 
        { 
            DataTable dt = new DataTable( tableName ); 
            object[] values = new object[fieldNames.Length]; 
            string fields = ""; 
            for ( int i = 0; i < fieldNames.Length; i++ ) 
            { 
                dt.Columns.Add( fieldNames[ i ], sourceTable.Columns[ fieldNames[ i ] ].DataType ); 
                fields += fieldNames[ i ] + ","; 
            } 
            fields = fields.Remove( fields.Length - 1, 1 ); 
            DataRow lastRow = null; 
            foreach ( DataRow dr in sourceTable.Select( "", fields ) ) 
            { 
                if ( lastRow == null || !( RowEqual( lastRow, dr, dt.Columns ) ) ) 
                { 
                    lastRow = dr; 
                    for ( int i = 0; i < fieldNames.Length; i++ ) 
                    { 
                        values[ i ] = dr[ fieldNames[ i ] ]; 
                    } 
                    dt.Rows.Add( values ); 
                } 
            } 
            if ( ds != null && !ds.Tables.Contains( tableName ) ) 
            { 
                ds.Tables.Add( dt ); 
            } 
            return dt; 

       } 

 

  

      

2、简单代码实现方式(只适用于.NET Framework2.0及以后版本)

复制代码
DataTable SourceTable = new SourseTable(); SourceTable.Columns.Add( " Code " , string ); // ...向SourseTable中添加数据 DataView view = new DataView(SourceTable); string [] columns = { " Code " }

DataTable tarTable = view.ToTable(true,columns);//得到目标

复制代码

 

3、使用Linq to Sql(只适用于.NET Framework3.5及以后版本)

用发现的眼光来看这个互联网,总有我们立脚的地方!——北纬28.33

转载于:https://www.cnblogs.com/xiaofengfeng/archive/2012/09/07/2674959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值