2014-09-04 92 views
0

我有一个数据集,其中包含例如ID,日期等领域...LINQ to DataSet DataTable组By - 语法

enter image description here

我想要检索基于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 

感谢,

回答

2

您需要为Date现场做OrderByDescending,然后选择一:

.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

非常感谢!非常感激。 – Ben 2014-09-04 18:17:03

+0

@本,欢迎您 – Habib 2014-09-04 18:20:22