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>(只要改下"比较器"即可)

目录
相关文章
|
6月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
5月前
|
索引
List集合(方法简介,集合遍历)
List集合(方法简介,集合遍历)
|
3月前
|
XML Java API
List与String相互转化方法汇总
本文汇总了List与String相互转化的多种方法,包括使用`String.join()`、`StringBuilder`、Java 8的Stream API、Apache Commons Lang3的`StringUtils.join()`以及Guava的`Joiner.on()`方法实现List转String;同时介绍了使用`split()`方法、正则表达式、Apache Commons Lang3的`StringUtils.split()`及Guava的`Splitter.on()`方法实现String转List。
List与String相互转化方法汇总
|
3月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
41 5
|
4月前
|
前端开发 Java 项目管理
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决
List.of 问题之使用List.of方法为什么会引发前端解析失败的问题,如何解决
|
4月前
|
XML Java API
List与String相互转化的方法有哪些
摘要:本文概述了Java中List转换为String及反之的多种策略。使用`String.join()`可简洁地连接List元素;`StringBuilder`提供灵活控制;Java 8 Stream API收集器简化操作;Apache Commons Lang3的`StringUtils.join()`和Guava的`Joiner.on()`支持外部库的高效转换。
|
4月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
|
5月前
|
Java 索引
JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
JavaSE——集合框架一(3/7)-List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
44 2
|
4月前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
5月前
|
Java
JAVA构建List集合为树形结构的方法和代码
JAVA构建List集合为树形结构的方法和代码
25 0

热门文章

最新文章