Linq .NET标准查询运算符-emptyOrder
在本msdn示例中: 我们可以看到左连接的示例: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是一个订单实例,用于表示缺少的
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”名称在当前上下文中不存在,换句话说,该值来自何处?谢谢谢谢你们;这是一个详细的解释。