DataTable,List去重复记录的方法

简介: 今天一位朋友问如何去掉DataTable里重复的记录(DataTable是别人返回过来的,不能再重新查询数据库,所以无法用sql中的select distinct xxx处理,只能在DataTable上动脑筋)  思路:将DataTable转成IEnumerable,然后就能调用Distinct方法了 by 菩提树下的杨过 http://yjmyzz.

今天一位朋友问如何去掉DataTable里重复的记录(DataTable是别人返回过来的,不能再重新查询数据库,所以无法用sql中的select distinct xxx处理,只能在DataTable上动脑筋) 

思路:将DataTable转成IEnumerable,然后就能调用Distinct方法了

img_405b18b4b6584ae338e0f6ecaf736533.gif by 菩提树下的杨过 http://yjmyzz.cnblogs.com/
using  System.Collections.Generic; 
using  System.Linq; 
using  System.Data; 
using  System; 

namespace  ConsoleApplication2 

    
class  Program 
    { 
        
static   void  Main( string [] args) 
        { 
            DataTable tbl 
=   new  DataTable(); 
            tbl.Columns.Add(
" Id " typeof (System.Int32)); 
            tbl.Columns.Add(
" City " typeof (System.String)); 
            tbl.Columns.Add(
" Province " typeof (System.String)); 

            tbl.Rows.Add(
1 " 武汉 " " 湖北 " ); 
            tbl.Rows.Add(
2 " 应城 " " 湖北 " ); 
            tbl.Rows.Add(
3 " 武汉 " " 湖北 " ); 

            IEnumerable 
< DataRow >  r  =  tbl.AsEnumerable().Distinct( new  CityComparer()); 
          
          

            
// 到这一步,r里就是去重复的记录了 

            
foreach  (var item  in  r) 
            { 
                Console.WriteLine(item[
" Id " +   " "   +  item[ " City " +   " "   +  item[ " Province " ]); 
            } 

            Console.ReadLine(); 
        } 


        
    } 

    
class  CityComparer : IEqualityComparer  < DataRow >  
    { 
        
public   bool  Equals(DataRow r1, DataRow r2) 
        { 
            
return  r1[ " City " ==  r2[ " City " ]; 
        } 

        
public   int  GetHashCode(DataRow obj) 
        { 
            
return  obj.ToString().GetHashCode(); 
        } 


    } 

 

上面的代码,将DataTable中"城市名"重复的记录去掉了,以上代码同样适用于List<T>(只要改下"比较器"即可)

目录
相关文章
|
1月前
|
Java 开发者
使用HashMap的values()方法返回的值转换为List时遇到错误
使用HashMap的values()方法返回的值转换为List时遇到错误
|
1月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
6月前
|
Java
Java 清空 List 的多种方法?
Java 清空 List 的多种方法?
540 0
|
17天前
List中的remove方法遇到报错不能删除以及四种解决办法点赞收藏
List中的remove方法遇到报错不能删除以及四种解决办法点赞收藏
16 0
|
22天前
使用List中的remove方法遇到数组越界
使用List中的remove方法遇到数组越界
13 2
|
1月前
|
Java
JAVA——List中剔除空元素(null)的三种方法汇总
JAVA——List中剔除空元素(null)的三种方法汇总
|
2月前
|
存储 Java 索引
java list集合相关介绍和方法使用操作
java list集合相关介绍和方法使用操作
29 1
|
8月前
list中所有方法的使用
学习List(列表)的使用方法。 /之前不能使用 值=什么 *之后只能使用 值=什么
51 0
|
4月前
|
索引
看一下List接口的常用方法
看一下List接口的常用方法
34 1
|
4月前
|
Python
python中ndarray与list转换的方法
python中ndarray与list转换的方法
31 0