LINQ to SQL GroupBy, Take and OrderBy
本文关键字:Take and OrderBy GroupBy to SQL LINQ | 更新日期: 2023-09-27 18:19:06
我有一个包含记录的表
| ID | FKID | Date | Username |
--------------------------------------------------------------
| A | a1 | 01/01/01 | Joe |
| B | a1 | 02/01/01 | Joe |
| C | b1 | 03/01/01 | Joe |
| D | b1 | 04/01/01 | Joe |
| E | c2 | 05/01/01 | Joe |
| F | c2 | 06/01/01 | Joe |
我要选择具有不同FKID
的3条记录,以最晚日期首先属于Joe
。
| F | c2 | 06/01/01 | Joe |
| D | b1 | 04/01/01 | Joe |
| B | a1 | 02/01/01 | Joe |
我可以为一个记录实现这个:
Table.Where(a => a.Username.Equals("Joe"))
.GroupBy(a => a.FKID)
.Select(g => g.FirstOrDefault())
.ToList<Record>();
但不能使Take()
和OrderByDecending()
正常工作
您需要OrderByDescending
:-
Table.Where(a => a.Username.Equals("Joe"))
.GroupBy(a => a.FKID)
.Select(g => g.OrderByDescending(x => x.Date).FirstOrDefault())
.Take(3)
.ToList<Record>();