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
        }
    }
  • 相关阅读:
    看懂SqlServer查询计划
    jQuery 插件autocomplete自动完成应用(自动补全)(asp.net后台)
    MVC Html.AntiForgeryToken() 防止CSRF攻击
    iOS开发UI篇—transframe属性(形变)
    iOS开发UI基础—手写控件,frame,center和bounds属性
    iOS开发UI篇—Button基础
    iOS开发UI篇—UITableviewcell的性能优化和缓存机制
    iOS开发UI篇—UITableview控件基本使用
    iOS开发UI篇—UITableview控件简单介绍
    iOS开发UI篇—推荐两个好用的Xcode插件(提供下载链接)
  • 原文地址:https://www.cnblogs.com/Unrmk-LingXing/p/4081932.html
Copyright © 2011-2022 走看看