Las*_*vik 11 linq entity-framework
我正在尝试获取"预订"的SUM并且我得到错误"转换为值类型'Int32'失败,因为具体化值为null.结果类型的泛型参数或查询必须使用可空类型."
var bookings = entities.Bookings.Where(x => x.ID == id &&
x.StartDate <= bookingEnd &&
x.EndDate >= bookingStart)
.Sum(x => x.BookingQuantity);
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我需要得到0,如果它变成零,否则它的预订.
Sim*_*ill 41
尝试null合并运算符:
var bookings = entities.Bookings.Where(x => x.ID == id &&
x.StartDate <= bookingEnd &&
x.EndDate >= bookingStart &&
x.BookingQuantity != null)
.Sum(x => (int?)x.BookingQuantity) ?? 0;
Run Code Online (Sandbox Code Playgroud)
或者将预订声明为可以为空的int
诠释?预订= ...
编译器类型推断将Sum的结果作为普通int,它永远不应为null.
Chr*_*ney 15
此页面建议修复此问题;
Sum(x => (int?)x.BookingQuantity) ?? 0;
Run Code Online (Sandbox Code Playgroud)