从这张表中,我试图根据组ID获取最新的registrationNumber作为用户的输入。
所以,我的查询目前看起来像这样:
var booksQuery = _context.Books.Where(g => g.GroupId == id)
.OrderByDescending(g => g.RegistrationNumber).GroupBy(g => g.GroupId);
id是用户指定的组ID。例如,如果id = 15,那么我应该将15:6作为我的最新注册号。为此,我基本上按id分组并按降序排序结果。但这给了我无效的结果。谁知道为什么?我对这个LINQ-Entitiy编码很新。
答案 0 :(得分:1)
正如其他人所说,你真的应该使你的registrationNumber字段成为一个整数,因为你想要对它进行排序。在这种情况下,您无法进行更改,下面是一个Linq查询,它基本上解析注册号并转换为整数,以便通过在冒号处拆分来对第一和第二部分进行排序。当你有15:10等时,这适用于排序,如15:10之前的字符串排序15:6
var booksQuery = books.Where(g => g.GroupId == id).ToList();
var bookWanted = booksQuery
.OrderByDescending(g => int.Parse(g.registrationNumber.Split(':')[0]))
.ThenByDescending(g=> int.Parse(g.registrationNumber.Split(':')[1]))
.FirstOrDefault();