zoukankan      html  css  js  c++  java
  • 转:去掉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
        }
    }
  • 相关阅读:
    23. CTF综合靶机渗透(十六)
    1.7 xss之同源策略与跨域访问
    6.wireshark使用全解
    29.极具破坏力的DDoS:浅析其攻击及防御
    6.【转载】业务安全漏洞挖掘归纳总结
    28.【转载】挖洞技巧:APP手势密码绕过思路总结
    27.【转载】挖洞技巧:如何绕过URL限制
    WordPress整站轻松开启HTTPS
    观复嘟嘟观古今
    房价会下跌么?
  • 原文地址:https://www.cnblogs.com/Unrmk-LingXing/p/4081932.html
Copyright © 2011-2022 走看看