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()

浙公网安备 33010602011771号