【问题标题】:Distinct records in DataTableDataTable 中的不同记录
【发布时间】:2013-03-31 16:35:17
【问题描述】:

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

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

【问题讨论】:

标签: c# asp.net datatable dataset


【解决方案1】:

你可以像下面这样使用

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

【讨论】:

  • 完全没有效果!相同的两行结果。先生,我错过了什么?
  • 在从数据库中选择记录时尝试trim function之间会有一些前导或尾随空格
  • 可能是因为中间有空格。实际上我在 pkid 中没有空字段记录。
【解决方案2】:

你可以试试这个吗?

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

【讨论】:

    猜你喜欢
    • 2013-02-10
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多