2013-04-09 73 views
2

我想根據某些字段獲取不同的記錄。我正在使用以下方法:DataTable中的不同記錄

string[] TobeDistinct = { "PKID" }; 
DataTable dtDistinct = GetDistinctRecords(ds.Tables[0], TobeDistinct); 
DataSet ds2 = new System.Data.DataSet(); 
ds2.Tables.Add(dtDistinct); 

public static DataTable GetDistinctRecords(DataTable dt, string[] Columns) 
{ 
    DataTable dtUniqRecords = new DataTable(); 
    dtUniqRecords = dt.DefaultView.ToTable(true, Columns); 
    return dtUniqRecords; 
} 

這給了我不同的記錄,但只有兩個記錄來。只有兩個不同的PKID會出現。例如,我有多個PKID爲10,12,14,16的記錄,但結果是PKID爲10和12的兩行。更多兩行不在那裏,但應該在那裏。我需要做什麼?

我按照這篇文章:http://www.codeproject.com/Tips/153008/Select-DISTINCT-records-based-on-specified-fields

enter image description here

+1

無法重現您的問題。你確定你將正確的表格傳遞給GetDistinctRecords嗎? – Steve 2013-04-09 10:11:15

+1

[如何在數據表中選擇不同的行並將其存儲到數組中]可能的重複(http://stackoverflow.com/questions/1199176/how-to-select-distinct-rows-in-a-datatable-and -store-into-an-array) – JNF 2014-11-23 06:59:07

回答

11

您可以像使用如下

DataView view = new DataView(table); 
DataTable distinctValues = view.ToTable(true, "Column1", "Column2" ...); 

更多細節
How to select distinct rows in a datatable and store into an array

+0

它根本不起作用!相同的兩行結果。我錯過了先生? – 2013-04-09 09:56:29

+0

之間會有一些前導空格或尾隨空格,在嘗試'trim function'的同時選擇記錄表格數據庫 – 2013-04-09 09:58:27

+0

它可能是由於空間之間的緣故。實際上我沒有pkid中的空字段記錄。 – 2013-04-09 10:01:30

6

你可以試試這個?

var myResult = dt.AsEnumerable().Select(c => (DataRow)c["MyColumn"]).Distinct().ToList();