Linq .NET标准查询运算符-emptyOrder

Linq .NET标准查询运算符-emptyOrder,linq,linq-to-entities,Linq,Linq To Entities,在本msdn示例中: 我们可以看到左连接的示例: var custTotalOrders = from c in customers join o in orders on c.CustomerID equals o.CustomerID into co from o in co.DefaultIfEmpty(emptyOrder) select new { c.Name, o.OrderDate, o.Total }; 它说: 其中emptyOrder是一个订单实例,用于表示缺少的

在本msdn示例中:

我们可以看到左连接的示例:

var custTotalOrders =
 from c in customers
 join o in orders on c.CustomerID equals o.CustomerID into co
 from o in co.DefaultIfEmpty(emptyOrder)
 select new { c.Name, o.OrderDate, o.Total };
它说:

其中emptyOrder是一个订单实例,用于表示缺少的订单

那么,emptyOrder来自哪里?
如何在代码中使用它?

DefaultIfEmpty有两个重载

()

第一个将返回默认值(T),其中T是可枚举项为空时包含在可枚举项中的类型

当枚举为空时,第二个将返回defaultValue参数中给定的值

假设您这样声明emptyOrder:

Order emtpyOrder = new Order() { Total=100 };
然后在查询中:

var custTotalOrders =
from c in customers
join o in orders on c.CustomerID equals o.CustomerID into co
from o in co.DefaultIfEmpty(emptyOrder)
select new { c.Name, o.OrderDate, o.Total };

当客户没有匹配的订单时,投影的匿名对象中的Total属性值将为100。

这是您要提供的值。如果集合
co
为空,则该值将用于结果。@JeffMercado,Jeff,因此,如果我在源代码中尝试了“emptyOrder”,则会弹出以下内容:“emptyOrder”名称在当前上下文中不存在,换句话说,该值来自何处?谢谢谢谢你们;这是一个详细的解释。