我有一个存储过程用于我的购物车系统,该过程返回总金额,如下所示;

ALTER PROCEDURE [dbo].[ShoppingCartGetTotalAmount]
(@CartID char(36))
AS
SELECT ISNULL(SUM(Product.Price * ShoppingCart.Quantity), 0)
FROM ShoppingCart INNER JOIN Product
ON ShoppingCart.ProductID = Product.ProductID
WHERE ShoppingCart.CartID = @CartID


但是,现在我想在实体框架中做同样的事情。因此,我需要知道以下任一选项;
1)如何在Entity FrameWork i-e中执行上述任务

SELECT ISNULL(SUM(Product.Price * ShoppingCart.Quantity), 0)
    FROM ShoppingCart INNER JOIN Product
    ON ShoppingCart.ProductID = Product.ProductID
    WHERE ShoppingCart.CartID = @CartID


2)或C#中SQL ISNULL()函数的等同性是什么?
3)或如何实现-> ISNULL(SUM(Product.Price * ShoppingCart.Quantity), 0)
使用任何.Net方法?

最佳答案

C#具有null coalesce operator-??


  ??运算符称为null-coalescing运算符,用于为可为空的值类型或引用类型定义默认值。如果操作数不为null,则返回左侧的操作数;否则,返回0。否则返回正确的操作数。


EF理解此运算符并正确翻译。

10-04 10:36