我的数据集包含例如id,date,other fields ......
我想根据ID和最新日期检索唯一的行。
我有这个查询,但我无法弄清楚将日期条件放在何处。
DataTable dt = ds.Tables[0]
.AsEnumerable()
.GroupBy(row => row.Field<string>("id"))
.Select(group => group.First())
.CopyToDataTable();
r.Text = dt.Rows.Count.ToString();
gv.DataSource = dt;
gv.DataBind();
结果应为
1 - 8/2/2014
2 - 1/8/2014
4 - 1/2/2011
谢谢,
答案 0 :(得分:2)
您需要为OrderByDescending
字段执行Date
,然后选择第一个:
.Select(group => group.OrderByDescending(r=> r.Field<DateTime>("Date")).First())
所以你的查询是:
DataTable dt = ds.Tables[0].AsEnumerable()
.GroupBy(row => row.Field<string>("id"))
.Select(group => group
.OrderByDescending(r=> r.Field<DateTime>("Date"))
.First())
.CopyToDataTable();
答案 1 :(得分:0)
也许你可以使用它:LINQ to Datatable Group by and return all columns
只返回你想要的字段,p.e。日期