前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DataTable,List去重复记录的方法

DataTable,List去重复记录的方法

作者头像
菩提树下的杨过
发布2018-01-23 14:35:24
1.8K0
发布2018-01-23 14:35:24
举报

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

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

by 菩提树下的杨过

代码语言:js
复制
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>(只要改下"比较器"即可)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-12-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档