2013-04-09 44 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();