文档章节

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

ThinkGem
 ThinkGem
发布于 2016/07/17 16:51
字数 307
阅读 36
收藏 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

粉丝 916
博文 136
码字总数 21994
作品 1
济南
架构师
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#中datatable去重的方法

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

donny945
2014/10/27
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
如何去掉DataTable中的重复行(新增.net 2.0中最新解决方法---简便)

.net 1.1中的解决方法(转) 1建立一个DataSetHelper类(DataSetHelper.cs) public class DataSetHelper ...{ public DataSet ds; public DataSetHelper(ref DataSet DataSet) ...{ ds = DataS......

pensir
2008/02/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS三元运算示例

1. topFlag=topFlag ==0?1:0; 等于 if(topFlag=00){ topFlag=1; }else if(topFlag == 1){ topFlag=0; } 2. 5>3?alert('5大'):alert('3大'); 即 if(5>3){alert('5大')}else{alert('3大')}; 注......

森火
今天
0
0
利用Slf4j的MDC跟踪方法调用链

why? 一个web项目通常提供很多URL访问地址, 项目一般都是分层处理,例如Controller——>Service——>DAO。 如果想根据日志查看用户一次请求都走了哪些方法(多数是查错误)。 如果系统是多人...

杨春炼
今天
9
0
Maven介绍及安装

Maven介绍及安装 以下内容是本人早期学习时的笔记,可能比较详实繁琐,现在复习一下Maven,顺便将内容抛出来,供大家一起学习进步。 一、Maven简介 Maven是Apache旗下的一款项目管理工具,是...

星汉
今天
0
0
小程序Aes解密

主要步骤: 1、下载AES源码(JS版) 2、在小程序中新建一个公共的文件夹,把AES源码拷贝进去(注意:需要暴露接口 module.exports = CryptoJS;) 3、添加一个用于加密解密的公共JS,可取名为...

Mr_Tea伯奕
今天
0
0
Go实现文件传输(基本传输可用)

发送端 package mainimport ("fmt""os""net""io")func SendFile(path string, connect net.Conn){file, oerr :=os.Open(path)if oerr !=nil{fmt.Println("Open", oerr)......

CHONGCHEN
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部