zoukankan      html  css  js  c++  java
  • DataTable,List去重复记录的方法

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

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

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

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    RobotFramework关键字返回参数
    安装MySQL提示:应用程序无法正常启动(0xc000007b)
    python操作mysql数据库
    Windows安装mysql8.0
    Windows解决多版本python执行pip3时出错AttributeError: module 'enum' has no attribute 'IntFlag'?
    优秀测试博主
    RobotFramework与Jenkins集成发送邮件
    Robot+Jenkins配置发邮件
    PHP 两个多维数组根据某个键的值进行组合排序的几种思路
    debian下配置keepalived ha
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1636131.html
Copyright © 2011-2022 走看看