4

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

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

在此处输入图像描述

4

2 回答 2

13

您可以使用如下

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

更多详细信息
如何在数据表中选择不同的行并将其存储到数组中

于 2013-04-09T09:51:12.070 回答
6

你能试试这个吗?

var myResult = dt.AsEnumerable().Select(c => (DataRow)c["MyColumn"]).Distinct().ToList();
于 2013-04-09T10:07:22.047 回答