我们如何从一个数据表中选择特定年份(例如2014年)的所有记录,其中一个列值(此处为2014)在多行上重复 表格使用linq或C#中的任何其他方法。
这是数据表:
答案 0 :(得分:1)
自从我与DataTables
合作以来已经有一段时间了,但我认为应该这样做。
选择年份在多行中重复的行:
dt.AsEnumerable().GroupBy(x => x["Year"]).Where(x => x.Count() > 1);
仅选择特定年份的行:
dt.AsEnumerable().Where(x => x["Year"] == "2014");
dt
是System.Data.DataTable
。
答案 1 :(得分: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 :(得分:0)
尝试在数据库中执行此操作,因为它比C#更快。 DB可以有索引但C#没有。
select *, count(1) as totalCount
group by year
having totalCount > 1