我希望根据某些字段获取不同的记录。我正在使用以下方法:
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
答案 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();