【发布时间】:2016-03-24 03:06:15
【问题描述】:
我们如何从数据表中选择特定年份的所有记录(例如 2014 年),其中一个列值(此处为 2014 年)在多行重复 使用 linq 或 C# 中的任何其他方法的表。
这是数据表:
【问题讨论】:
-
我正在尝试检索所有重复的记录,但无论您做什么都会删除重复并提供过滤数据......但无论如何都要帮助我......
我们如何从数据表中选择特定年份的所有记录(例如 2014 年),其中一个列值(此处为 2014 年)在多行重复 使用 linq 或 C# 中的任何其他方法的表。
这是数据表:
【问题讨论】:
如果您尝试检索 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
}
【讨论】:
我与DataTables 合作已经有一段时间了,但我认为应该这样做。
要选择年份在多行中重复的行:
dt.AsEnumerable().GroupBy(x => x["Year"]).Where(x => x.Count() > 1);
仅选择特定年份的行:
dt.AsEnumerable().Where(x => x["Year"] == "2014");
dt 是您的System.Data.DataTable。
【讨论】:
尝试在数据库中进行,因为它比 C# 更快。 DB 可以有索引,但 C# 没有。
select *, count(1) as totalCount
group by year
having totalCount > 1
【讨论】: