使用LINQ SUM时出现异常

使用LINQ SUM时出现异常,linq,entity-framework,Linq,Entity Framework,我正在尝试获取“bookings”的总和,但出现错误“转换为值类型'Int32'失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为null的类型。” var bookings=entities.bookings.Where(x=>x.ID==ID&& x、 StartDate=bookingStart) .总和(x=>x.预订数量); 我该怎么解决这个问题?如果它为空,我需要得到0,否则它的预订量将为空。添加对空的检查 var bookings = entities.Book

我正在尝试获取“bookings”的总和,但出现错误“转换为值类型'Int32'失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为null的类型。”

var bookings=entities.bookings.Where(x=>x.ID==ID&&
x、 StartDate=bookingStart)
.总和(x=>x.预订数量);

我该怎么解决这个问题?如果它为空,我需要得到0,否则它的预订量将为空。

添加对空的检查

var bookings = entities.Bookings.Where(x => x.ID == id &&
                                     x.StartDate <= bookingEnd &&
                                     x.EndDate >= bookingStart && 
                                     x.BookingQuantity != null)
                                    .Sum(x => x.BookingQuantity);
var bookings=entities.bookings.Where(x=>x.ID==ID&&
x、 StartDate=预订开始(&T)
x、 预订数量!=空)
.总和(x=>x.预订数量);
建议解决此问题

Sum(x => (int?)x.BookingQuantity) ?? 0;

请尝试空合并运算符:

var bookings = entities.Bookings.Where(x => x.ID == id &&
                                 x.StartDate <= bookingEnd &&
                                 x.EndDate >= bookingStart && 
                                 x.BookingQuantity != null)
                                .Sum(x => (int?)x.BookingQuantity) ?? 0;
var bookings=entities.bookings.Where(x=>x.ID==ID&&
x、 StartDate=预订开始(&T)
x、 预订数量!=空)
.Sum(x=>(int?)x.预订数量)??0;
或将预订声明为可为空的整数

智力?预订量=


编译器类型推断将Sum的结果提取为普通整数,该整数永远不应为空。

SELECT*FROM Bookings,其中BookingQuantity为空返回0行,因此如果有任何行,则所有行都有1行或多行。这里的问题相同:在我的情况下,它也返回整数,而不是没有意义的可为空整数。这是怎么回事??0修复它吗?我的编译器抛出一个错误,说“?”??无法应用于int类型'您是否将其强制转换为(int?)?
var bookings = entities.Bookings.Where(x => x.ID == id &&
                                 x.StartDate <= bookingEnd &&
                                 x.EndDate >= bookingStart && 
                                 x.BookingQuantity != null)
                                .Sum(x => (int?)x.BookingQuantity) ?? 0;