DataTable中的独特记录

时间:2013-04-09 09:47:44

标签: c# asp.net datatable dataset

我希望根据某些字段获取不同的记录。我正在使用以下方法:

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的2行。更多的两行不存在,但应该在那里。我需要做什么?

我遵循这篇文章:http://www.codeproject.com/Tips/153008/Select-DISTINCT-records-based-on-specified-fields

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:6)

你能试试吗?

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