在实体框架中使用max()函数会引发异常

Ale*_*aux 1 entity-framework max

所以我需要使用实体框架获取列(或最后一列)的最大值,并且这两个查询都抛出异常:

(我正在尝试检索的ID是varchar类型,但它在原始sql中工作,我认为它也应该在这里工作)

这个:

string maxCurrentID = db.reservations.Max().ReservationID;
Run Code Online (Sandbox Code Playgroud)

抛出这个:

类型为"System.Linq.Queryable"的指定方法"EntityClub_.reservacion Maxreservacion"无法转换为LINQ to Entities存储表达式,因为没有重载与传递的参数匹配.

还有这个:

 string maxCurrentID = db.reservations.LastOrDefault().ReservationID;
Run Code Online (Sandbox Code Playgroud)

LINQ to Entities无法识别方法'EntityClub_.reservacion LastOrDefaultreservacion'方法,并且此方法无法转换为商店表达式.

我如何获得预期值?

san*_*eet 18

var maxReservationId=db.reservations.Max(u =>(int?)u.ReservationID) ?? 0;
Run Code Online (Sandbox Code Playgroud)

如果表中没有数据,则替换null0


小智 7

您没有要求最高的ReservationID,您正在尝试获得最高的预订,并获得其ReservationID.EF不了解"最高预订"的含义.

var maxReservationID = db.reservations.Max(r => r.ReservationID);
Run Code Online (Sandbox Code Playgroud)

要么

var maxReservationID = db.reservations.Select(r => r.ReservationID).Max();
Run Code Online (Sandbox Code Playgroud)

应该管用.