DataTable中如何去除重復的項 (獲得某個字段中的不重復項)


就是獲取DataTable中某一列的值,因為從數據庫中檢索數據時,按照2個字段進行分組,而要獲得的那一列剛好在分組這兩列中,所以該列的值必然有重復,於是就想到了去除重復,有了思路以后在網上看了一些方法,大都是遍歷之類的,雖說功能是可以實現,但是效率太低了,最后發現了一個簡單的方法,如下:

1
2
3
4
5
6
7
8
9
10
11
public  string[] GetNamesFromDataTable(DataTable dataTable)
         {
             DataView dv = dataTable.DefaultView;
             dataTable = dv.ToTable( true ,  "Name" );
             string [] names =  new  string[dataTable.Rows.Count];
             for  (int i = 0; i < names.Length; i++)
             {
                 names[i] = dataTable.Rows[i][0].ToString();
             }
             return  names;
         }

  

解析:DataView.ToTable()方法有四個重載方法,分別如下:

      ToTable():根據現有的DataView中的行,創建並返回一個新的DataTable

      ToTable(string tableName):功能如上,只不過是為新的DataTable賦了一個名字

      ToDataTable(bool distinct,parm string[] columnNames):根據現有的DataView中的行創建並返回DataTable,distinct,為true,則返回所有列都具有不同值的行,第二個參數為一個字符數組,即可以指定要獲取的列,上邊的例子中,只指定了一列,即獲取某一列的不重復的信息。

      ToDataTable(string tableName,bool distinct,parm string[] columnNames);功能如上,只不過多了一個DataTableName

SQL中的Join 問題

上周在項目中遇到一個這樣的問題,通過關聯兩個表進行數據的查詢,然后按照兩個字段進行分組,整個查詢邏輯是沒有問題的,但是查詢結果總是所有的分組項的值都是一樣的,而事實上查詢的結果應該是不同的,而且有些分組項是沒有值的,這個時候檢查了一下SQL語句,發現在進行兩表關聯的時候是進行等值連接,也就是內連接的一種表示形式。如果想要得到想要的結果,應該是以其中的一個表為主表進行左連接或右連接的。既然講到了這里就把SQL的各種連接再溫習一遍。

這里我把連接分為三類,內連接、外連接和交叉連接。當然還有其他的分類方法,但大體上都是一樣的。下面對各種連接一一進行分析。

在開始分析之前,先建兩個臨時的表作為演示示例。

1
2
3
4
5
6
7
8
9
10
11
12
create table #T1(id  int , name varchar(20))
create table #T2(rootid  int , value  int )
insert  into  #T1 values(116,'Olive')
insert  into  #T1 values(224,'Only')
insert  into  #T1 values(336,'For')
insert  into  #T1 values(448,'You')
insert  into  #T1 values(1115,'Love')
insert  into  #T2 values(116,1)
insert  into  #T2 values(224,3)
insert  into  #T2 values(336,1)
insert  into  #T2 values(448,4)
insert  into  #T2 values(1165,24)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM