刪除DataTable重覆列,只針對刪除其中的一列重覆的行

来源:http://www.cnblogs.com/shouce/archive/2016/04/06/5357716.html
-Advertisement-
Play Games

vs2005針對datatable已經有封裝好的去重覆方法: 1 //去掉重覆行 2 DataView dv = table.DefaultView; 3 table = dv.ToTable(true, new string[] { "name", "code" }); 4 5 此時table 就 ...


vs2005針對datatable已經有封裝好的去重覆方法:

複製代碼
1 //去掉重覆行
2 DataView dv = table.DefaultView;
3 table = dv.ToTable(true, new string[] { "name", "code" });
4 
5 此時table 就只有name、code無重覆的兩行了,如果還需要id值則
6 
7 table = dv.ToTable(true, new string[] { "id","name", "code" });//第一個參數true 啟用去重覆,類似distinct
複製代碼

如果有一組數據(id不是唯一欄位)

 

複製代碼
id   name   code


1    張三    123

2    李四    456

3    張三    456

1   張三     123
複製代碼

 

通過上面的方法得到

複製代碼
 id   name   code


1    張三    123

2    李四    456

3    張三    456
複製代碼

 

去重覆去掉的僅僅是 id name code完全重覆的行,如果想要篩選的數據僅僅是name不允許重覆呢?

table = dv.ToTable(true, new string[] { "name"});

得到:

name 
 
張三  
  
李四  

但是我想要的結果是只針對其中的一列name列 去重覆,還要顯示其他的列

需要的結果是:

 id   name   code


1    張三    123

2    李四    456

這個該怎麼實現?下麵的方法就可以,也許有更好的方法,希望大家多多指教

複製代碼
 1  #region 刪除DataTable重覆列,類似distinct
 2         /// <summary>   
 3         /// 刪除DataTable重覆列,類似distinct   
 4         /// </summary>   
 5         /// <param name="dt">DataTable</param>   
 6         /// <param name="Field">欄位名</param>   
 7         /// <returns></returns>   
 8         public static DataTable DeleteSameRow(DataTable dt, string Field)
 9         {
10             ArrayList indexList = new ArrayList();
11             // 找出待刪除的行索引   
12             for (int i = 0; i < dt.Rows.Count - 1; i++)
13             {
14                 if (!IsContain(indexList, i))
15                 {
16                     for (int j = i + 1; j < dt.Rows.Count; j++)
17                     {
18                         if (dt.Rows[i][Field].ToString() == dt.Rows[j][Field].ToString())
19                         {
20                             indexList.Add(j);
21                         }
22                     }
23                 }
24             }
25             indexList.Sort();
 // 排序
26 for (int i = indexList.Count - 1; i >= 0; i--)// 根據待刪除索引列表刪除行  27 { 28 int index = Convert.ToInt32(indexList[i]); 29 dt.Rows.RemoveAt(index); 30 } 31 return dt; 32 } 33 34 /// <summary> 35 /// 判斷數組中是否存在 36 /// </summary> 37 /// <param name="indexList">數組</param> 38 /// <param name="index">索引</param> 39 /// <returns></returns> 40 public static bool IsContain(ArrayList indexList, int index) 41 { 42 for (int i = 0; i < indexList.Count; i++) 43 { 44 int tempIndex = Convert.ToInt32(indexList[i]); 45 if (tempIndex == index) 46 { 47 return true; 48 } 49 } 50 return false; 51 } 52 #endregion
複製代碼

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 HtmlHelper方法為我們提供很多html標簽,只需在頁面調用就行了,但是微軟並沒有把所有的html標簽都對應有了擴展方法,需要我們重新自定義Htmlper,來滿足我們需要。 方法 上面代碼解讀: 在使用TagBuilder需要引入命名空間System.Web.Mvc。 Submit方法名 ...
  • 最近整理了一份jQueryUI文檔,方便以後學習和運用。 把玩地址 ...
  • Web service是一個基於可編程的web的應用程式,用於開發分散式的互操作的應用程式,也是一種web服務 WebService的特性有以下幾點: 1.使用XML(標準通用標記語言)來作為數據交互的格式。 2.跨平臺性,因為使用XML所以只要本地應用可以連接網路解析XML就可以實現數據交換,比如 ...
  • 我們很高興宣佈2016年 V1 版本發佈了,可免費下載試用。 今年ComponentOne 將聚焦WinForm、WPF、MVC、UWP平臺和核心控制項Flex家族。 本次發佈主要包括UWP平臺;WinForm平臺的FlexPivot控制項和MVC平臺的FlexSheet控制項;FlexChart、Fle ...
  • 本文綜合整理自知乎同名問答帖,題主的補充: 比 如技能有:可以用cmd 命令查詢到電腦的各種狀態, 可以用快捷鍵瞬間轉換視窗頁面的軟體…當然這些都是些簡單的…還有神麽不為人知的高端技能大家可以來露一手麽? 有什麼網站或者論壇可以接觸到這些高端技能麽? 以前我覺得學電腦的室友可以再 cmd里設置電腦 ...
  • 發佈/訂閱 在之前的案例中我們創建了一個工作隊列,這個工作隊列的實現思想就是一個把每一個任務平均分配給每一個執行者,在這個篇文章我們會做一些不一樣的東西,把一個消息發送給多個消費者,這種模式就被稱作"發佈/訂閱". 為了說明這個模式,我們將要創建一個簡單的日誌系統,一個負責發佈消息,另外一個負責接收 ...
  • 分類:Unity、C#、VS2015 創建日期:2016-04-06 一、簡介 Unity自帶的資源包也稱為標準資源包。換言之,Unity自帶的所有標準資源包導入到Unity項目中以後,都會放在Project視圖的Standed Assets文件夾下。如果是多平臺,除了Standed Assets文... ...
  • 今天剛剛明白ref和out的區別,只限於個人理解如有不同請賜教,謝謝 首先我感覺ref和out是針對於值類型來說,以前一直認為是針對於引用類型看下麵的一段代碼 1.首先結果 i=0;ints[0]=0 i=0;ints[0]=100 2.ints作為一個引用類型在傳入方法後,對ints[0]進行了賦 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...