使用LINQ SUM时出现异常
我正在尝试获取“bookings”的总和,但出现错误“转换为值类型'Int32'失败,因为具体化的值为null。结果类型的泛型参数或查询必须使用可为null的类型。”使用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
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;