`
thinkgem
  • 浏览: 580702 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

C# 如何去掉DataTable中的重复行

    博客分类:
  • C#
阅读更多
.net 1.1中的解决方法
1建立一个DataSetHelper类(DataSetHelper.cs)
 
  public class DataSetHelper
  {
     public DataSet ds;
     public DataSetHelper(ref DataSet DataSet)
      {
         ds = DataSet;
     }
     public DataSetHelper()
      {
         ds = null;
     }
     private bool ColumnEqual(object A, object B)
      {
         if (A == DBNull.Value && B == DBNull.Value) //  both are DBNull.Value
             return true;
         if (A == DBNull.Value || B == DBNull.Value) //  only one is DBNull.Value
             return false;
         return (A.Equals(B));  // value type standard comparison
     }
     public DataTable SelectDistinct(string TableName, DataTable SourceTable, string FieldName)
      {
         DataTable dt = new DataTable(TableName);
         dt.Columns.Add(FieldName, SourceTable.Columns[FieldName].DataType);
 
         object LastValue = null;
         foreach (DataRow dr in SourceTable.Select("", FieldName))
          {
             if (LastValue == null || !(ColumnEqual(LastValue, dr[FieldName])))
              {
                 LastValue = dr[FieldName];
                  dt.Rows.Add(new object[] { LastValue });
             }
         }
         if (ds != null)
             ds.Tables.Add(dt);
         return dt;
     }
 }
 2 建立一个Web窗体,在page_load中写下面的代码
       
         DataSet ds;
         DataSetHelper dsHelper;
         ds = new DataSet();
         dsHelper = new DataSetHelper(ref ds);
 
         // Create source table
         DataTable dt = new DataTable("Orders");
         dt.Columns.Add("EmployeeID", Type.GetType("System.String"));
         dt.Columns.Add("OrderID", Type.GetType("System.Int32"));
         dt.Columns.Add("Amount", Type.GetType("System.Decimal"));
 
          dt.Rows.Add(new object[] { "Sam", 5, 25.00 });
          dt.Rows.Add(new object[] { "Tom", 7, 50.00 });
          dt.Rows.Add(new object[] { "Sue", 9, 11.00 });
          dt.Rows.Add(new Object[] { "Tom", 12, 7.00 });
          dt.Rows.Add(new Object[] { "Sam", 14, 512.00 });
          dt.Rows.Add(new Object[] { "Sue", 15, 17.00 });
          dt.Rows.Add(new Object[] { "Sue", 22, 2.50 });
          dt.Rows.Add(new object[] { "Tom", 24, 3.00 });
          dt.Rows.Add(new object[] { "Tom", 33, 78.75 });
 
         ds.Tables.Add(dt);
        DataTable td=dsHelper.SelectDistinct("DistinctEmployees", ds.Tables["Orders"], "EmployeeID");
        this.GridView1.DataSource = td;
        this.GridView1.DataBind();
 ===========================================================================================
 .net 2.0中的解决方法
 
          public DataTable GetTopSearch()
          {
             DataSet dsKeyword = dal.GetKeyword();
             DataSet dsTopSearch = new DataSet();
             for (int i = 0; i < 4; i++)
              {
                 string keyword = dsKeyword.Tables[0].Rows[i]["Name"].ToString();
                 string condition = dsKeyword.Tables[0].Rows[i]["SearchCondition"].ToString();
                 dsTopSearch.Merge(dal.GetTopSearch(keyword,condition));
             }
             return dsTopSearch.Tables[0].DefaultView.ToTable(true, "ID","Name","Author","Publisher","PublishDate","TypeName","Price","SalePrice","SavePrice","Rebate","ImagePath","ContentIntro");
         }
 
分享到:
评论

相关推荐

    datatable中移除重复行 ,并能合并重复行

    datatable中移除重复行 ,并能合并重复行

    C# DataTable去重,根据列名去重保留其他列

    详细描述如何使用C# 去除DataTable中的重复列,根据列名去重保留其他列

    C#中datatable去重的方法

    本文实例讲述了C#中datatable去重的方法,分享给大家供大家参考。具体方法如下: 这里主要介绍两种方法: 1 数据库直接去除重复 代码如下:select distinct * from 表名 去除了重复行distinct 2 对 DataTable直接...

    DataTable分类求和,分类汇总,排序

    对于这个问题,自己郁闷了四五天的时间,之后终于做出来了,分享一下. 主要是从操作内存中的datatable表,而非直接操作数据库,筛选,去除重复行,sum求和,根据某个字段进行排序等等操作....

    datatable去掉重复行的方法

    去掉DataTable中(所有列的数据都相同)重复的行: 代码如下: //DataView dv = dt3.DefaultView; //dt3默认的虚拟视图 //dv.Sort = “wmid asc”; //排序 ///dv.ToTable(true, “列名,列名,列名”); ///第一个...

    C#将txt文档中的重复记录删除。

    winform中,浏览一个文件,将txt文件中的重复记录去掉。 首先将txt文档中的记录,映射到DataTable中,然后进行处理。

    C#开发经验技巧宝典

    0877 利用关键字DISTINCT去除重复记录 517 0878 巧用TOP子句获取信息 518 0879 巧用CONTAINS谓词检索信息 518 0880 通过ISNULL替换信息 519 0881 比较COMPUTE和GROUP BY 519 0882 如何对指定时间段进行...

    C#编程经验技巧宝典

    85 &lt;br&gt;0131 巧截字符串的数字 86 &lt;br&gt;0132 如何存储变长字符串 86 &lt;br&gt;0133 在进行字符串比较时忽略大小写 87 &lt;br&gt;0134 如何去除字符串尾空格 87 &lt;br&gt;0135 如何去掉字符串中所有空格 ...

    C# 轻量级ORM 编写思维

     降低研发人员门槛,提高效率,去除重复引用DLL的工作,基础配置由抽象工厂处理。  基础扩展   /// /// DataTable 转换为List 集合 /// /// 类型 /// &lt;param name=dt&gt;...

    【。net 专业】 面试题

    请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new Form1()); } // ******************* 防止程序多次执行 ***********...

    ExtAspNet_v2.3.2_dll

    -修正了使用IFrameUrl的Tab在切换过程中会重复加载的问题,这是一个在v2.1.6引入的问题(feedback:eroach)。 -修正了启用AutoPostBack的Grid,其RowClick会覆盖LinkButtonField, HyperLinkField, CheckBoxField的...

Global site tag (gtag.js) - Google Analytics