Linq 分组后取每一组时间最新的一条数据

sql

SELECT * FROM (select ROW_NUMBER()over(partition by Id order by CollTime desc) AS newIndex,* from Table) as T where T.newIndex=1 

结果:

 

lambda

方式一

var query = _repository.GetAll().GroupBy(r => r.Id).Select(p => p.OrderByDescending(r => r.CollTime).FirstOrDefault());

 方式二(使用SelectMany的方式)

var query = _repository.GetAll().OrderByDescending(s => s.CreationTime);
var queryS = query.Select(r => r.Id).Distinct().SelectMany(s => query.Where(p => p.Id == s).Take(1));

 

Linq 

from c in _repository.GetAll()
group c by c.Id into g
select g.OrderByDescending(r => r.CollTime).FirstOrDefault()

 

 

参考

posted @ 2023-05-15 16:36  流年sugar  阅读(759)  评论(0)    收藏  举报