C# LINQ到数据集数据表分组依据-语法

C# LINQ到数据集数据表分组依据-语法,c#,linq,dataset,linq-to-dataset,C#,Linq,Dataset,Linq To Dataset,我有一个数据集,其中包含例如id、日期、其他字段 我想根据ID和最新日期检索唯一的行 我有这个查询,但我不知道把日期条件放在哪里 DataTable dt = ds.Tables[0] .AsEnumerable() .GroupBy(row => row.Field<string>("id")) .Select(group => group.F

我有一个数据集,其中包含例如id、日期、其他字段

我想根据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();
谢谢,

也许你可以用这个:


只返回所需的字段,即日期

您需要对
日期
字段执行降序操作,然后选择第一个:

 .Select(group => group.OrderByDescending(r=> r.Field<DateTime>("Date")).First())
.Select(group=>group.OrderByDescending(r=>r.Field(“日期”)).First())
所以你的问题是:

DataTable dt = ds.Tables[0].AsEnumerable()
                .GroupBy(row => row.Field<string>("id"))
                .Select(group => group
                                .OrderByDescending(r=> r.Field<DateTime>("Date"))
                                .First())
                .CopyToDataTable();
DataTable dt=ds.Tables[0].AsEnumerable()
.GroupBy(row=>row.Field(“id”))
.选择(组=>group
.OrderByDescending(r=>r.Field(“日期”))
.First())
.CopyToDataTable();

非常感谢!!非常感谢。
DataTable dt = ds.Tables[0].AsEnumerable()
                .GroupBy(row => row.Field<string>("id"))
                .Select(group => group
                                .OrderByDescending(r=> r.Field<DateTime>("Date"))
                                .First())
                .CopyToDataTable();