我们有一个创建订单的交易系统。 表格结构如下
我想通过linq查询获取不同状态的订单相关信息。
var orderLines = (from submittedOrderLine in submittedOrderLines
join submittedShadow in submittedShadows
on submittedOrderLine.OrderLineId equals submittedShadow.OrderLineID
join partialConfirmedOrderLine in partialConfirmedOrderLines
on submittedOrderLine.productId equals partialConfirmedOrderLine.productId into partialConfirmedOrder
from partialConfirmed in partialConfirmedOrder.DefaultIfEmpty()
join confirmedOrderLine in confirmedOrderLines
on submittedOrderLine.productId equals confirmedOrderLine.productId into confirmedOrder
from confirmed in confirmedOrder.DefaultIfEmpty()
join confirmedShadow in confirmedShadows
on confirmed.OrderLineId equals confirmedShadow.OrderLineID
select new OrderEntity
{
OrderNumber = orderId,
productId = submittedOrderLine.productId,
Description = submittedShadow.Description,
SubmittedQuantity = qty
SubmittedPrice = submittedOrderLine.ProductPrice
confirmed
}).Tolist()
我正在尝试对所有状态使用相同的查询。 我需要基于lineID加入订单行和产品阴影。如果订单处于部分确认的状态,则确认的线条和阴影将为空,并且将引发null ref异常。
如果我必须将提交的行与已确认的行连接起来,则可以使用左连接并进行处理。但是我不确定当我需要加入已确认的行和已确认的阴影以及两者都为空时如何处理。 已确认。OrderLineId为空将引发空引用异常。