文档章节

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

ThinkGem
 ThinkGem
发布于 2016/07/17 16:51
字数 307
阅读 57
收藏 0
.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");
         }
 

本文转载自:http://thinkgem.iteye.com/blog/724081

共有 人打赏支持
ThinkGem

ThinkGem

粉丝 1111
博文 138
码字总数 24109
作品 2
济南
架构师
私信 提问
DataTable中检索信息 (C#)

C#_从DataTable中检索信息 存在于内存中的虚拟表DataTable,绑定在数据显示控件后,如果想在再检索其中某些信息,可以利用DataTable.Select方法进行检索,避免了重复的读取数据库。Select方法...

CS-CS01
2018/10/18
0
0
c#,win frm 水晶报表,动态字段

动态字段做之前怎么也做不出来,愁死。 后来发现其实挺简单,似乎只要是多个重复字段的数据,就可以自动排出来,只要把他们放在section3(详细资料): c0到c14是将要重复输出的字段(数据不重...

anima.lee
2014/08/26
0
0
Linq 和DefaultView两种方法去掉DataTable 里的重复行

在做项目的时候经常会遇到DataTable 里的数据重复,或者合并两个DataTable后有数据重复 一般我们是想把重复的删除掉,还有其它的方式实现比如用Linq和DataTable的DefaultView来去掉重复的行 ...

吞吞吐吐的
2017/09/12
0
0
C#中实现行列转换

【IT168技术文档】 C#中实现行列转换  在DataTable中有一列数据  eg  name  01  02  03  04  要显示成2列2行形式  name1 name2  01 02  03 04  C# code  DataTable CreateDat...

IT168网站
2009/07/31
0
0
C#中datatable去重的方法

这篇文章主要介绍了C#中datatable去重的方法,通过两种不同的方法对比分析了datatable去重的技巧,非常具有实用价值,需要的朋友可以参考下 这里主要介绍两种方法: 1 数据库直接去除重复 sele...

donny945
2014/10/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Temp-Memo

Recommended Ref : SQL High CPU troubleshooting checklist -- Top 50 SQL highly consuming cpuSELECT TOP 50[Avg. MultiCore/CPU time(sec)] = qs.total_worker_time / 1000000 / qs......

Goopand
19分钟前
1
0
dotConnect for Oracle入门指南(七):存储过程

【下载dotConnect for Oracle最新版本】 dotConnect for Oracle(原名OraDirect.NET)建立在ADO.NET技术上,为基于Oracle数据库的应用程序提供完整的解决方案。它为设计应用程序结构带来了新的...

电池盒
20分钟前
2
0
如何使用阿里云ARMS轻松重现用户浏览器问题

客户投诉不断,本地却无法重现? 页面加载较慢是用户经常会反馈的问题,也是前端非常关注的问题之一。但定位、排查解决这类问题就通常会花费非常多的时间,主要原因如下: 页面是在用户端的浏...

阿里云官方博客
24分钟前
1
0
因资源用尽导致服务宕机

1. 事故的发生 服务调用场景和发生的事件如下图所示,红色表示服务不可用. 服务A和服务B都是内部服务,服务C_*为不同运营商提供的服务,遵循一样的协议。 某一天,突然发现所有服务A调用服务...

北风刮的不认真了
28分钟前
3
0
锤子科技"临死前"被"接盘" ,内部人士爆料已改签今日头条母公司

就在昨天,据据锤子科技内部人士透露,部分锤子科技员工在昨天已经接到了相关的临时通知,要求改签劳动合同至今日头条的母公司——字节跳动。至于这是锤子科技真正再度复活还是借尸还魂都不重...

终端研发部
38分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部