【问题标题】:Select all records of a datatable with duplicate values选择具有重复值的数据表的所有记录
【发布时间】:2016-03-24 03:06:15
【问题描述】:

我们如何从数据表中选择特定年份的所有记录(例如 2014 年),其中一个列值(此处为 2014 年)在多行重复 使用 linq 或 C# 中的任何其他方法的表。

这是数据表:

【问题讨论】:

  • 我正在尝试检索所有重复的记录,但无论您做什么都会删除重复并提供过滤数据......但无论如何都要帮助我......

标签: c# linq


【解决方案1】:

如果您尝试检索 2014 年的所有记录,请使用以下 linq 查询,IT 将检查您的数据列是否有数据,我相信它会工作..

        //selecting all the records of 2014
        IEnumerable<DataRow> dtrow = default(IEnumerable<DataRow>);
        dtrow = yourtable.AsEnumerable().Where(x => x.Field<Int64>("year") == Convert.ToInt64("2014"));
        if (dtrow.Count() > 0)
        {
            dataTbl = dtrow.CopyToDataTable(); //dataTbl is the DataTable
        }

【讨论】:

    【解决方案2】:

    我与DataTables 合作已经有一段时间了,但我认为应该这样做。

    要选择年份在多行中重复的行:

    dt.AsEnumerable().GroupBy(x => x["Year"]).Where(x => x.Count() > 1);
    

    仅选择特定年份的行:

    dt.AsEnumerable().Where(x => x["Year"] == "2014");
    

    dt 是您的System.Data.DataTable

    【讨论】:

    • 感谢您的快速回答,但我只想检索 2014 年或 2015 年等的记录。
    • 希望我的编辑更准确一点?
    • 非常感谢 Jonz 的两个回答。
    • 如何再次将结果作为数据表获取?
    【解决方案3】:

    尝试在数据库中进行,因为它比 C# 更快。 DB 可以有索引,但 C# 没有。

    select *, count(1) as totalCount
    group by year
    having totalCount > 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2017-10-20
      • 1970-01-01
      • 2012-01-13
      相关资源
      最近更新 更多