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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Linux sed命令实例详解
    hadoop2.0 和1.0的区别
    linux如何修改主机名
    hadoop主节点(NameNode)备份策略以及恢复方法
    Hadoop 添加删除数据节点(datanode)
    Hadoop常见错误及处理方法
    【转】ImageView.ScaleType属性
    MonoBehaviour.print和Debug.Log是同样的作用
    unity自带寻路Navmesh入门教程
    前向渲染路径细节 Forward Rendering Path Details
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1636131.html
Copyright © 2011-2022 走看看