• 对dataTable去重


    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace RemoveDupRowDemoTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                DataTable _dt = new DataTable();
                _dt.Columns.Add("id", typeof(int));
                _dt.Columns.Add("name", typeof(string));
                _dt.Columns.Add("address", typeof(string));
    
                DataRow _dr = _dt.NewRow();
                _dr["id"] = 1;
                _dr["name"] = "lipeng";
                _dr["address"] = "DongXiaoKou";
                _dt.Rows.Add(_dr);
                _dt.Rows.Add(_dr.ItemArray);
                _dt.Rows.Add(_dr.ItemArray);
                _dr = _dt.NewRow();
                _dr["id"] = 2;
                _dr["name"] = "xiaoNa";
                _dr["address"] = "DongXiaoKou";
                _dt.Rows.Add(_dr);
                _dr = _dt.NewRow();
                _dr["id"] = 3;
                _dr["name"] = "BingLi";
                _dr["address"] = "TianTongYuan";
                _dt.Rows.Add(_dr);
                _dt.Rows.Add(_dr.ItemArray);
                Console.WriteLine("--------------------原来有重复数据的Table----------------------");
                _dt.AsEnumerable().ToList().ForEach(
                    x =>
                    {
                        Console.WriteLine(x["id"].ToString() + "  " + x["name"].ToString() + "   " + x["address"].ToString());
                    });
    
    
                Console.WriteLine();
    
                Console.WriteLine("--------------------用Linq去重复后的Table----------------------");
    
                var _comPresult = _dt.AsEnumerable().Distinct(new DataTableRowCompare());
                DataTable _resultDt = _comPresult.CopyToDataTable();
    
                _resultDt.AsEnumerable().ToList().ForEach(
                   x =>
                   {
                       Console.WriteLine(x["id"].ToString() + "    " + x["name"].ToString() + "   " + x["address"].ToString());
                   });
    
                Console.WriteLine();
    
                Console.WriteLine("--------------------用DefaultView去重复后的Table----------------------");
                DataTable _dtDefalut = _dt.DefaultView.ToTable(true, "id", "name", "address");
    
    
                _dtDefalut.AsEnumerable().ToList().ForEach(
                  x =>
                  {
                      Console.WriteLine(x["id"].ToString() + "    " + x["name"].ToString() + "   " + x["address"].ToString());
                  });
    
                Console.ReadLine();
            }
        }
        public class DataTableRowCompare : IEqualityComparer<DataRow>
        {
    
            #region IEqualityComparer<DataRow> 成员
    
            public bool Equals(DataRow x, DataRow y)
            {
                return (x.Field<int>("id") == y.Field<int>("id"));
            }
    
            public int GetHashCode(DataRow obj)
            {
                return obj.ToString().GetHashCode();
            }
    
            #endregion
        }
    }
  • 相关阅读:
    Linux下通过C++码来操作MySQL数据库
    Linux TCP/IP 实例
    Linux UDP C/S例子
    memcached: error while loading shared libraries: libevent-2.0.so.5: cannot o解决
    /etc/profile和/root/.bash_profile有什么区别
    双Y轴柱线结合图(FusionChart)
    分组柱状图(FusionChart)
    远程过程调用(RPC)
    软件系统开发中的数据交换协议
    RPC 远程过程调用协议
  • 原文地址:https://www.cnblogs.com/Unrmk-LingXing/p/4168628.html
Copyright © 2020-2023  润新知