在执行LINQ to Entities查询时获取空数据

时间:2018-01-05 22:07:08

标签: c# entity-framework linq

我有以下书表: enter image description here

从这张表中,我试图根据组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编码很新。

1 个答案:

答案 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();